diff --git a/src/editor/g_map.pas b/src/editor/g_map.pas
index a1e9babf68be070c4dc7b02cac1e2aa349a34a83..5a17e97276fc8f681fdcd8d57b7f2cf0e0632f6b 100644 (file)
--- a/src/editor/g_map.pas
+++ b/src/editor/g_map.pas
Unit g_map;
Unit g_map;
-{$MODE Delphi}
+{$INCLUDE ../shared/a_modes.inc}
Interface
Uses
Interface
Uses
- LCLIntf, LCLType, LMessages, g_basic, e_graphics, MAPREADER, MAPSTRUCT,
- MAPWRITER, e_log, MAPDEF;
+ LCLIntf, LCLType, g_basic, e_graphics, MAPREADER, MAPSTRUCT,
+ MAPWRITER, e_log, MAPDEF, utils;
Type
TMapObject = record
Type
TMapObject = record
procedure ShiftMapObjects(dx, dy: Integer);
procedure ShiftMapObjects(dx, dy: Integer);
-Implementation
+implementation
-Uses
+uses
BinEditor, g_textures, Dialogs, SysUtils, CONFIG, f_main,
BinEditor, g_textures, Dialogs, SysUtils, CONFIG, f_main,
- Forms, Math, f_addresource_texture, WADEDITOR,
- Masks, g_Language;
+ Forms, Math, f_addresource_texture, WADEDITOR, g_language;
const
OLD_ITEM_MEDKIT_SMALL = 1;
const
OLD_ITEM_MEDKIT_SMALL = 1;
fn := fn + Res;
end
else
fn := fn + Res;
end
else
- fn := EditorDir + 'wads\' + Res;
+ fn := EditorDir + 'wads/' + Res;
g_CreateTextureWAD(SKY_TEXTURE, fn);
end;
g_CreateTextureWAD(SKY_TEXTURE, fn);
end;
begin
Result := False;
begin
Result := False;
+ PanelID := DWORD(-1);
case ObjectType of
OBJECT_PANEL:
case ObjectType of
OBJECT_PANEL:
begin
WAD := nil;
begin
WAD := nil;
+ textures := nil;
+ panels := nil;
+ items := nil;
+ areas := nil;
+ monsters := nil;
+ triggers := nil;
+ PanelTable := nil;
+ MonsterTable := nil;
+ Data := nil;
+ Len := 0;
// Открываем WAD, если надо:
if Res <> '' then
// Открываем WAD, если надо:
if Res <> '' then
begin
ZeroMemory(@header, SizeOf(TMapHeaderRec_1));
begin
ZeroMemory(@header, SizeOf(TMapHeaderRec_1));
- if gMapInfo.Name <> '' then
- CopyMemory(@MapName[0], @gMapInfo.Name[1], Min(32, Length(gMapInfo.Name)));
+ s := utf2win(gMapInfo.Name);
+ if s <> '' then
+ CopyMemory(@MapName[0], @s[1], Min(32, Length(s)));
- if gMapInfo.Description <> '' then
- CopyMemory(@MapDescription[0], @gMapInfo.Description[1], Min(256, Length(gMapInfo.Description)));
+ s := utf2win(gMapInfo.Description);
+ if s <> '' then
+ CopyMemory(@MapDescription[0], @s[1], Min(256, Length(s)));
- if gMapInfo.Author <> '' then
- CopyMemory(@MapAuthor[0], @gMapInfo.Author[1], Min(32, Length(gMapInfo.Author)));
+ s := utf2win(gMapInfo.Author);
+ if s <> '' then
+ CopyMemory(@MapAuthor[0], @s[1], Min(32, Length(s)));
- if gMapInfo.MusicName <> '' then
- CopyMemory(@MusicName[0], @gMapInfo.MusicName[1], Min(64, Length(gMapInfo.MusicName)));
+ s := utf2win(gMapInfo.MusicName);
+ if s <> '' then
+ CopyMemory(@MusicName[0], @s[1], Min(64, Length(s)));
- if gMapInfo.SkyName <> '' then
- CopyMemory(@SkyName[0], @gMapInfo.SkyName[1], Min(64, Length(gMapInfo.SkyName)));
+ s := utf2win(gMapInfo.SkyName);
+ if s <> '' then
+ CopyMemory(@SkyName[0], @s[1], Min(64, Length(s)));
Width := gMapInfo.Width;
Height := gMapInfo.Height;
Width := gMapInfo.Width;
Height := gMapInfo.Height;
for a := 0 to MainForm.lbTextureList.Items.Count-1 do
begin
SetLength(textures, Length(textures)+1);
for a := 0 to MainForm.lbTextureList.Items.Count-1 do
begin
SetLength(textures, Length(textures)+1);
- s := MainForm.lbTextureList.Items[a];
+ s := utf2win(MainForm.lbTextureList.Items[a]);
CopyMemory(@textures[High(textures)].Resource[0], @s[1], Min(64, Length(s)));
CopyMemory(@textures[High(textures)].Resource[0], @s[1], Min(64, Length(s)));
- if g_GetTextureFlagByName(s) = 1 then
+ if g_GetTextureFlagByName(MainForm.lbTextureList.Items[a]) = 1 then
textures[High(textures)].Anim := 1
else
textures[High(textures)].Anim := 0;
textures[High(textures)].Anim := 1
else
textures[High(textures)].Anim := 0;
// Номер текстуры в списке текстур:
if gPanels[a].TextureID <> TEXTURE_SPECIAL_NONE then
for b := 0 to High(textures) do
// Номер текстуры в списке текстур:
if gPanels[a].TextureID <> TEXTURE_SPECIAL_NONE then
for b := 0 to High(textures) do
- if gPanels[a].TextureName = textures[b].Resource then
+ if utf2win(gPanels[a].TextureName) = textures[b].Resource then
begin
TextureNum := b;
Break;
begin
TextureNum := b;
Break;
// Записываем в WAD, если надо:
if Res <> '' then
begin
// Записываем в WAD, если надо:
if Res <> '' then
begin
- WAD.RemoveResource('', ResName);
- WAD.AddResource(Data, Len, ResName, '');
+ s := utf2win(ResName);
+ WAD.RemoveResource('', s);
+ WAD.AddResource(Data, Len, s, '');
WAD.SaveTo(FileName);
FreeMem(Data);
WAD.SaveTo(FileName);
FreeMem(Data);
Data: Pointer;
Width, Height, m: Word;
FileName, SectionName, ResName, _fn: String;
Data: Pointer;
Width, Height, m: Word;
FileName, SectionName, ResName, _fn: String;
- TextureRes: String;
+ TextureRes, ustr: String;
pData: Pointer;
Len, FrameLen: Integer;
Error: Boolean;
pData: Pointer;
Len, FrameLen: Integer;
Error: Boolean;
NW, NH: Word;
begin
Result := False;
NW, NH: Word;
begin
Result := False;
+ pData := nil;
+ Len := 0;
+ Data := nil;
+ FrameLen := 0;
+ Width := 0;
+ Height := 0;
+ NoTextureID := 0;
+ NW := 0;
+ NH := 0;
MainForm.pbLoad.Position := 0;
MainForm.lLoad.Caption := _lc[I_LOAD_WAD];
MainForm.pbLoad.Position := 0;
MainForm.lLoad.Caption := _lc[I_LOAD_WAD];
end;
// Читаем ресурс карты:
end;
// Читаем ресурс карты:
- if not WAD.GetResource('', ResName, pData, Len) then
+ if not WAD.GetResource('', utf2win(ResName), pData, Len) then
begin
WAD.Free();
Exit;
begin
WAD.Free();
Exit;
begin
MainForm.pbLoad.StepIt();
Application.ProcessMessages();
begin
MainForm.pbLoad.StepIt();
Application.ProcessMessages();
+ ustr := win2utf(textures[a].Resource);
- if IsSpecialTexture(textures[a].Resource) then
+ if IsSpecialTexture(ustr) then
begin
begin
- AddTexture(textures[a].Resource, False);
+ AddTexture(ustr, False);
Continue;
end;
Continue;
end;
- g_ProcessResourceStr(textures[a].Resource, @_fn, nil, nil);
+ g_ProcessResourceStr(ustr, @_fn, nil, nil);
if _fn = '' then
if _fn = '' then
- TextureRes := FileName + textures[a].Resource
+ TextureRes := FileName + ustr
else
else
- TextureRes := EditorDir+'wads\'+textures[a].Resource;
+ TextureRes := EditorDir+'wads/'+ustr;
Error := False;
if not ByteBool(textures[a].Anim) then
begin // Обычная текстура
Error := False;
if not ByteBool(textures[a].Anim) then
begin // Обычная текстура
- if not g_CreateTextureWAD(textures[a].Resource, TextureRes) then
+ if not g_CreateTextureWAD(ustr, TextureRes) then
begin
e_WriteLog(Format('g_CreateTextureWAD() error, res=%s',
begin
e_WriteLog(Format('g_CreateTextureWAD() error, res=%s',
- [textures[a].Resource]), MSG_WARNING);
+ [ustr]), MSG_WARNING);
Error := True;
end;
Error := True;
end;
- AddTexture(textures[a].Resource, Error);
+ AddTexture(ustr, Error);
end
else // Anim
begin // Анимированная текстура
if not GetFrame(TextureRes, Data, FrameLen, Width, Height) then
begin // Кадры
e_WriteLog(Format('GetFrame() error, res=%s',
end
else // Anim
begin // Анимированная текстура
if not GetFrame(TextureRes, Data, FrameLen, Width, Height) then
begin // Кадры
e_WriteLog(Format('GetFrame() error, res=%s',
- [textures[a].Resource]), MSG_WARNING);
+ [ustr]), MSG_WARNING);
Error := True;
end;
Error := True;
end;
- if not g_CreateTextureMemorySize(Data, FrameLen, textures[a].Resource, 0, 0, Width, Height, 1) then
+ if not g_CreateTextureMemorySize(Data, FrameLen, ustr, 0, 0, Width, Height, 1) then
begin // Сама текстура
e_WriteLog(Format('g_CreateTextureMemorySize() error, res=%s',
begin // Сама текстура
e_WriteLog(Format('g_CreateTextureMemorySize() error, res=%s',
- [textures[a].Resource]), MSG_WARNING);
+ [ustr]), MSG_WARNING);
Error := True;
end;
Error := True;
end;
- AddTexture(textures[a].Resource, Error);
+ AddTexture(ustr, Error);
end;
end;
end;
end;
end;
end;
if WordBool(panel.PanelType and m) and
(not (ByteBool(panels[a].Flags and PANEL_FLAG_HIDE))) then
begin
if WordBool(panel.PanelType and m) and
(not (ByteBool(panels[a].Flags and PANEL_FLAG_HIDE))) then
begin
- if not IsSpecialTexture(textures[panels[a].TextureNum].Resource) then
+ ustr := win2utf(textures[panels[a].TextureNum].Resource);
+ if not IsSpecialTexture(ustr) then
begin // Текстура
begin // Текстура
- if g_GetTexture(textures[panels[a].TextureNum].Resource, panel.TextureID) then
+ if g_GetTexture(ustr, panel.TextureID) then
g_GetTextureSizeByID(panel.TextureID, panel.TextureWidth, panel.TextureHeight)
else begin
panel.TextureWidth := 1;
g_GetTextureSizeByID(panel.TextureID, panel.TextureWidth, panel.TextureHeight)
else begin
panel.TextureWidth := 1;
end;
end
else // Спец. текстура
end;
end
else // Спец. текстура
- panel.TextureID := SpecialTextureID(textures[panels[a].TextureNum].Resource);
+ panel.TextureID := SpecialTextureID(ustr);
- panel.TextureName := textures[panels[a].TextureNum].Resource;
+ panel.TextureName := ustr;
end;
// Жидкость без текстуры:
end;
// Жидкость без текстуры:
with gMapInfo do
begin
MapName := ResName;
with gMapInfo do
begin
MapName := ResName;
- Name := Header.MapName;
- Description := Header.MapDescription;
- Author := Header.MapAuthor;
- MusicName := Header.MusicName;
- SkyName := Header.SkyName;
+ Name := win2utf(Header.MapName);
+ Description := win2utf(Header.MapDescription);
+ Author := win2utf(Header.MapAuthor);
+ MusicName := win2utf(Header.MusicName);
+ SkyName := win2utf(Header.SkyName);
Height := Header.Height;
Width := Header.Width;
end;
Height := Header.Height;
Width := Header.Width;
end;
Continue;
// Нет такой текстуры - ищем в WAD карты:
Continue;
// Нет такой текстуры - ищем в WAD карты:
- if not g_CreateTextureWAD(s, EditorDir+'\wads\'+s) then
+ if not g_CreateTextureWAD(s, EditorDir+'wads/'+s) then
begin
s := ExtractFileName(_FileName);
Delete(s, Length(s)-3, 4);
begin
s := ExtractFileName(_FileName);
Delete(s, Length(s)-3, 4);
- s := UpperCase(s) + '.WAD:TEXTURES\'+ UpperCase(map.ReadStr('Textures', 'TextureName'+IntToStr(a), ''));
+ s := UpperCase(s) + '.WAD:TEXTURES\'+ UpperCase(win2utf(map.ReadStr('Textures', 'TextureName'+IntToStr(a), '')));
- if not g_CreateTextureWAD(s, EditorDir+'\wads\'+s) then
+ if not g_CreateTextureWAD(s, EditorDir+'wads/'+s) then
Continue;
end;
Continue;
end;
begin
s := ExtractFileName(_FileName);
Delete(s, Length(s)-3, 4);
begin
s := ExtractFileName(_FileName);
Delete(s, Length(s)-3, 4);
- s := UpperCase(s) + '.WAD:TEXTURES\' + UpperCase(map.ReadStr(section, 'TextureName', ''));
+ s := UpperCase(s) + '.WAD:TEXTURES\' + UpperCase(win2utf(map.ReadStr(section, 'TextureName', '')));
if g_GetTexture(s, panel.TextureID) then
begin
if g_GetTexture(s, panel.TextureID) then
begin
NoTextureID: DWORD;
NW, NH: Word;
begin
NoTextureID: DWORD;
NW, NH: Word;
begin
+ NoTextureID := 0;
+ NW := 0;
+ NH := 0;
with gPanels[a] do
begin
case TextureID of
TEXTURE_SPECIAL_NONE:
with gPanels[a] do
begin
case TextureID of
TEXTURE_SPECIAL_NONE:
- if not PreviewMode then
+ if PreviewMode = 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
64, 64, 64, 127);
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
64, 64, 64, 127);
end;
TEXTURE_SPECIAL_WATER:
end;
TEXTURE_SPECIAL_WATER:
- if PreviewMode then
+ if PreviewMode > 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
0, 0, 255, 0, B_FILTER)
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
0, 0, 255, 0, B_FILTER)
0, 0, 255, 127);
TEXTURE_SPECIAL_ACID1:
0, 0, 255, 127);
TEXTURE_SPECIAL_ACID1:
- if PreviewMode then
+ if PreviewMode > 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
0, 127, 0, 0, B_FILTER)
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
0, 127, 0, 0, B_FILTER)
0, 255, 0, 127);
TEXTURE_SPECIAL_ACID2:
0, 255, 0, 127);
TEXTURE_SPECIAL_ACID2:
- if PreviewMode then
+ if PreviewMode > 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
127, 0, 0, 0, B_FILTER)
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
127, 0, 0, 0, B_FILTER)
DrawTexture(a);
PANEL_LIFTUP:
DrawTexture(a);
PANEL_LIFTUP:
- if not PreviewMode then
+ if PreviewMode = 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
128, 64, 0, 0);
PANEL_LIFTDOWN:
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
128, 64, 0, 0);
PANEL_LIFTDOWN:
- if not PreviewMode then
+ if PreviewMode = 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
90, 154, 138, 0);
PANEL_LIFTLEFT:
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
90, 154, 138, 0);
PANEL_LIFTLEFT:
- if not PreviewMode then
+ if PreviewMode = 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
200, 80, 4, 0);
PANEL_LIFTRIGHT:
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
200, 80, 4, 0);
PANEL_LIFTRIGHT:
- if not PreviewMode then
+ if PreviewMode = 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
252, 140, 56, 0);
PANEL_BLOCKMON:
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
252, 140, 56, 0);
PANEL_BLOCKMON:
- if not PreviewMode then
+ if PreviewMode = 0 then
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
192, 0, 192, 0);
e_DrawFillQuad(X+MapOffset.X, Y+MapOffset.Y,
X+MapOffset.X+Width-1, Y+MapOffset.Y+Height-1,
192, 0, 192, 0);
r: TRectWH;
begin
r: TRectWH;
begin
+ ID := 0;
// В режиме Превью рисуем небо:
// В режиме Превью рисуем небо:
- if PreviewMode then
+ if PreviewMode > 0 then
begin
w := Max(MainForm.RenderPanel.Width, MainForm.RenderPanel.Height);
if MainForm.RenderPanel.Height > MainForm.RenderPanel.Width*3/4 then
begin
w := Max(MainForm.RenderPanel.Width, MainForm.RenderPanel.Height);
if MainForm.RenderPanel.Height > MainForm.RenderPanel.Width*3/4 then
end;
// Рисуем панели (если Превью или если включен слой):
end;
// Рисуем панели (если Превью или если включен слой):
- if LayerEnabled[LAYER_BACK] or PreviewMode then
+ if LayerEnabled[LAYER_BACK] or (PreviewMode = 1) then
DrawPanels(PANEL_BACK);
DrawPanels(PANEL_BACK);
- if PreviewMode then
+ if PreviewMode > 0 then
DrawPanels(PANEL_LIFTUP or PANEL_LIFTDOWN or PANEL_LIFTLEFT or PANEL_LIFTRIGHT)
else
if LayerEnabled[LAYER_WATER] then
DrawPanels(PANEL_LIFTUP or PANEL_LIFTDOWN or PANEL_LIFTLEFT or PANEL_LIFTRIGHT or
PANEL_OPENDOOR or PANEL_CLOSEDOOR or PANEL_BLOCKMON);
DrawPanels(PANEL_LIFTUP or PANEL_LIFTDOWN or PANEL_LIFTLEFT or PANEL_LIFTRIGHT)
else
if LayerEnabled[LAYER_WATER] then
DrawPanels(PANEL_LIFTUP or PANEL_LIFTDOWN or PANEL_LIFTLEFT or PANEL_LIFTRIGHT or
PANEL_OPENDOOR or PANEL_CLOSEDOOR or PANEL_BLOCKMON);
- if LayerEnabled[LAYER_WALLS] or PreviewMode then
+ if LayerEnabled[LAYER_WALLS] or (PreviewMode = 1) then
DrawPanels(PANEL_WALL);
DrawPanels(PANEL_WALL);
- if LayerEnabled[LAYER_STEPS] or PreviewMode then
+ if LayerEnabled[LAYER_STEPS] or (PreviewMode = 1) then
DrawPanels(PANEL_STEP);
// Рисуем предметы:
DrawPanels(PANEL_STEP);
// Рисуем предметы:
- if (LayerEnabled[LAYER_ITEMS] or PreviewMode) and
+ if (LayerEnabled[LAYER_ITEMS] or (PreviewMode = 1)) and
(gItems <> nil) then
for a := 0 to High(gItems) do
if gItems[a].ItemType <> ITEM_NONE then
(gItems <> nil) then
for a := 0 to High(gItems) do
if gItems[a].ItemType <> ITEM_NONE then
end;
// Рисуем монстров:
end;
// Рисуем монстров:
- if (LayerEnabled[LAYER_MONSTERS] or PreviewMode) and
+ if (LayerEnabled[LAYER_MONSTERS] or (PreviewMode = 1)) and
(gMonsters <> nil) then
for a := 0 to High(gMonsters) do
if gMonsters[a].MonsterType <> MONSTER_NONE then
(gMonsters <> nil) then
for a := 0 to High(gMonsters) do
if gMonsters[a].MonsterType <> MONSTER_NONE then
end;
// Рамка:
end;
// Рамка:
- if not PreviewMode then
+ if PreviewMode = 0 then
begin
e_DrawQuad(MapOffset.X+gMonsters[a].X, MapOffset.Y+gMonsters[a].Y,
MapOffset.X+gMonsters[a].X+Width-1, MapOffset.Y+gMonsters[a].Y+Height-1,
begin
e_DrawQuad(MapOffset.X+gMonsters[a].X, MapOffset.Y+gMonsters[a].Y,
MapOffset.X+gMonsters[a].X+Width-1, MapOffset.Y+gMonsters[a].Y+Height-1,
end;
// Рисуем закрытые двери после монстров:
end;
// Рисуем закрытые двери после монстров:
- if PreviewMode then
+ if ((PreviewMode = 2) and LayerEnabled[LAYER_WATER])
+ or (PreviewMode = 1) then
DrawPanels(PANEL_CLOSEDOOR);
// Рисуем области:
DrawPanels(PANEL_CLOSEDOOR);
// Рисуем области:
- if (LayerEnabled[LAYER_AREAS] or PreviewMode) and
+ if (LayerEnabled[LAYER_AREAS] or (PreviewMode = 1)) and
(gAreas <> nil) then
for a := 0 to High(gAreas) do
if gAreas[a].AreaType <> AREA_NONE then
(gAreas <> nil) then
for a := 0 to High(gAreas) do
if gAreas[a].AreaType <> AREA_NONE then
AREA_BLUETEAMPOINT: g_GetTexture('AREA_BLUEPOINT', ID);
end;
AREA_BLUETEAMPOINT: g_GetTexture('AREA_BLUEPOINT', ID);
end;
- if (not PreviewMode) or
+ if (PreviewMode = 0) or
(gAreas[a].AreaType = AREA_REDFLAG) or
(gAreas[a].AreaType = AREA_BLUEFLAG) or
(gAreas[a].AreaType = AREA_DOMFLAG) then
(gAreas[a].AreaType = AREA_REDFLAG) or
(gAreas[a].AreaType = AREA_BLUEFLAG) or
(gAreas[a].AreaType = AREA_DOMFLAG) then
0, True, False);
// Рамка:
0, True, False);
// Рамка:
- if not PreviewMode then
+ if PreviewMode = 0 then
begin
e_DrawQuad(MapOffset.X+gAreas[a].X, MapOffset.Y+gAreas[a].Y,
MapOffset.X+gAreas[a].X+Width-1, MapOffset.Y+gAreas[a].Y+Height-1,
begin
e_DrawQuad(MapOffset.X+gAreas[a].X, MapOffset.Y+gAreas[a].Y,
MapOffset.X+gAreas[a].X+Width-1, MapOffset.Y+gAreas[a].Y+Height-1,
end;
// Рисуем жидкости и передний план после областей:
end;
// Рисуем жидкости и передний план после областей:
- if LayerEnabled[LAYER_WATER] or PreviewMode then
+ if LayerEnabled[LAYER_WATER] or (PreviewMode = 1) then
DrawPanels(PANEL_WATER or PANEL_ACID1 or PANEL_ACID2);
DrawPanels(PANEL_WATER or PANEL_ACID1 or PANEL_ACID2);
- if LayerEnabled[LAYER_FOREGROUND] or PreviewMode then
+ if LayerEnabled[LAYER_FOREGROUND] or (PreviewMode = 1) then
DrawPanels(PANEL_FORE);
// Рисуем триггеры:
if LayerEnabled[LAYER_TRIGGERS] and
DrawPanels(PANEL_FORE);
// Рисуем триггеры:
if LayerEnabled[LAYER_TRIGGERS] and
- (not PreviewMode) and (gTriggers <> nil) then
+ (PreviewMode = 0) and (gTriggers <> nil) then
for a := 0 to High(gTriggers) do
with gTriggers[a] do
if TriggerType <> TRIGGER_NONE then
for a := 0 to High(gTriggers) do
with gTriggers[a] do
if TriggerType <> TRIGGER_NONE then
end;
// Границы карты:
end;
// Границы карты:
- if not PreviewMode then
+ if PreviewMode = 0 then
begin
e_DrawFillQuad(-32+MapOffset.X,
-32+MapOffset.Y,
begin
e_DrawFillQuad(-32+MapOffset.X,
-32+MapOffset.Y,
procedure LoadData();
begin
procedure LoadData();
begin
- g_CreateTextureWAD('PREVIEW', EditorDir+'\data\Editor.wad:TEXTURES\CHECKERS');
- g_CreateTextureWAD('NOTEXTURE', EditorDir+'\data\Game.wad:TEXTURES\NOTEXTURE');
-
- g_CreateTextureWADSize('AREA_REDFLAG', EditorDir+'\data\Game.wad:TEXTURES\FLAGRED', 0, 0, 64, 64);
- g_CreateTextureWADSize('AREA_BLUEFLAG', EditorDir+'\data\Game.wad:TEXTURES\FLAGBLUE', 0, 0, 64, 64);
- g_CreateTextureWADSize('AREA_DOMFLAG', EditorDir+'\data\Game.wad:TEXTURES\FLAGDOM', 0, 0, 64, 64);
-
- g_CreateTextureWADSize('MONSTER_DEMON', EditorDir+'\data\Game.wad:MTEXTURES\DEMON_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_IMP', EditorDir+'\data\Game.wad:MTEXTURES\IMP_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_ZOMBY', EditorDir+'\data\Game.wad:MTEXTURES\ZOMBY_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_SERG', EditorDir+'\data\Game.wad:MTEXTURES\SERG_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_CYBER', EditorDir+'\data\Game.wad:MTEXTURES\CYBER_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_CGUN', EditorDir+'\data\Game.wad:MTEXTURES\CGUN_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_BARON', EditorDir+'\data\Game.wad:MTEXTURES\BARON_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_KNIGHT', EditorDir+'\data\Game.wad:MTEXTURES\KNIGHT_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_CACO', EditorDir+'\data\Game.wad:MTEXTURES\CACO_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_SOUL', EditorDir+'\data\Game.wad:MTEXTURES\SOUL_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_PAIN', EditorDir+'\data\Game.wad:MTEXTURES\PAIN_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_SPIDER', EditorDir+'\data\Game.wad:MTEXTURES\SPIDER_SLEEP', 0, 0, 256, 128);
- g_CreateTextureWADSize('MONSTER_BSP', EditorDir+'\data\Game.wad:MTEXTURES\BSP_SLEEP', 0, 0, 128, 64);
- g_CreateTextureWADSize('MONSTER_MANCUB', EditorDir+'\data\Game.wad:MTEXTURES\MANCUB_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_SKEL', EditorDir+'\data\Game.wad:MTEXTURES\SKEL_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_VILE', EditorDir+'\data\Game.wad:MTEXTURES\VILE_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_FISH', EditorDir+'\data\Game.wad:MTEXTURES\FISH_SLEEP', 0, 0, 32, 32);
- g_CreateTextureWADSize('MONSTER_BARREL', EditorDir+'\data\Game.wad:MTEXTURES\BARREL_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_ROBO', EditorDir+'\data\Game.wad:MTEXTURES\ROBO_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_MAN', EditorDir+'\data\Game.wad:MTEXTURES\MAN_SLEEP', 0, 0, 64, 64);
-
- g_CreateTextureWADSize('ITEM_BLUESPHERE', EditorDir+'\data\Game.wad:TEXTURES\SBLUE', 0, 0, 32, 32);
- g_CreateTextureWADSize('ITEM_WHITESPHERE', EditorDir+'\data\Game.wad:TEXTURES\SWHITE', 0, 0, 32, 32);
- g_CreateTextureWADSize('ITEM_ARMORGREEN', EditorDir+'\data\Game.wad:TEXTURES\ARMORGREEN', 0, 0, 32, 16);
- g_CreateTextureWADSize('ITEM_ARMORBLUE', EditorDir+'\data\Game.wad:TEXTURES\ARMORBLUE', 0, 0, 32, 16);
- g_CreateTextureWADSize('ITEM_INVUL', EditorDir+'\data\Game.wad:TEXTURES\INVUL', 0, 0, 32, 32);
- g_CreateTextureWADSize('ITEM_BOTTLE', EditorDir+'\data\Game.wad:TEXTURES\BOTTLE', 0, 0, 16, 32);
- g_CreateTextureWADSize('ITEM_HELMET', EditorDir+'\data\Game.wad:TEXTURES\HELMET', 0, 0, 16, 16);
- g_CreateTextureWADSize('ITEM_INVIS', EditorDir+'\data\Game.wad:TEXTURES\INVIS', 0, 0, 32, 32);
- g_CreateTextureWADSize('ITEM_WEAPON_FLAMETHROWER', EditorDir+'\data\Game.wad:TEXTURES\FLAMETHROWER', 0, 0, 64, 32);
- g_CreateTextureWADSize('ITEM_AMMO_FUELCAN', EditorDir+'\data\Game.wad:TEXTURES\FUELCAN', 0, 0, 16, 32);
-
- g_CreateTextureWAD('ITEM_MEDKIT_SMALL', EditorDir+'\data\Game.wad:TEXTURES\MED1');
- g_CreateTextureWAD('ITEM_MEDKIT_LARGE', EditorDir+'\data\Game.wad:TEXTURES\MED2');
- g_CreateTextureWAD('ITEM_WEAPON_SAW', EditorDir+'\data\Game.wad:TEXTURES\SAW');
- g_CreateTextureWAD('ITEM_WEAPON_PISTOL', EditorDir+'\data\Game.wad:TEXTURES\PISTOL');
- g_CreateTextureWAD('ITEM_WEAPON_KASTET', EditorDir+'\data\Game.wad:TEXTURES\KASTET');
- g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN1', EditorDir+'\data\Game.wad:TEXTURES\SHOTGUN1');
- g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN2', EditorDir+'\data\Game.wad:TEXTURES\SHOTGUN2');
- g_CreateTextureWAD('ITEM_WEAPON_CHAINGUN', EditorDir+'\data\Game.wad:TEXTURES\MGUN');
- g_CreateTextureWAD('ITEM_WEAPON_ROCKETLAUNCHER', EditorDir+'\data\Game.wad:TEXTURES\RLAUNCHER');
- g_CreateTextureWAD('ITEM_WEAPON_PLASMA', EditorDir+'\data\Game.wad:TEXTURES\PGUN');
- g_CreateTextureWAD('ITEM_WEAPON_BFG', EditorDir+'\data\Game.wad:TEXTURES\BFG');
- g_CreateTextureWAD('ITEM_WEAPON_SUPERPULEMET', EditorDir+'\data\Game.wad:TEXTURES\SPULEMET');
- g_CreateTextureWAD('ITEM_AMMO_BULLETS', EditorDir+'\data\Game.wad:TEXTURES\CLIP');
- g_CreateTextureWAD('ITEM_AMMO_BULLETS_BOX', EditorDir+'\data\Game.wad:TEXTURES\AMMO');
- g_CreateTextureWAD('ITEM_AMMO_SHELLS', EditorDir+'\data\Game.wad:TEXTURES\SHELL1');
- g_CreateTextureWAD('ITEM_AMMO_SHELLS_BOX', EditorDir+'\data\Game.wad:TEXTURES\SHELL2');
- g_CreateTextureWAD('ITEM_AMMO_ROCKET', EditorDir+'\data\Game.wad:TEXTURES\ROCKET');
- g_CreateTextureWAD('ITEM_AMMO_ROCKET_BOX', EditorDir+'\data\Game.wad:TEXTURES\ROCKETS');
- g_CreateTextureWAD('ITEM_AMMO_CELL', EditorDir+'\data\Game.wad:TEXTURES\CELL');
- g_CreateTextureWAD('ITEM_AMMO_CELL_BIG', EditorDir+'\data\Game.wad:TEXTURES\CELL2');
- g_CreateTextureWAD('ITEM_AMMO_BACKPACK', EditorDir+'\data\Game.wad:TEXTURES\BPACK');
- g_CreateTextureWAD('ITEM_KEY_RED', EditorDir+'\data\Game.wad:TEXTURES\KEYR');
- g_CreateTextureWAD('ITEM_KEY_GREEN', EditorDir+'\data\Game.wad:TEXTURES\KEYG');
- g_CreateTextureWAD('ITEM_KEY_BLUE', EditorDir+'\data\Game.wad:TEXTURES\KEYB');
- g_CreateTextureWAD('ITEM_OXYGEN', EditorDir+'\data\Game.wad:TEXTURES\OXYGEN');
- g_CreateTextureWAD('ITEM_SUIT', EditorDir+'\data\Game.wad:TEXTURES\SUIT');
- g_CreateTextureWAD('ITEM_MEDKIT_BLACK', EditorDir+'\data\Game.wad:TEXTURES\BMED');
- g_CreateTextureWAD('ITEM_JETPACK', EditorDir+'\data\Game.wad:TEXTURES\JETPACK');
-
- g_CreateTextureWAD('AREA_PLAYERPOINT1', EditorDir+'\data\Editor.wad:TEXTURES\P1POINT');
- g_CreateTextureWAD('AREA_PLAYERPOINT2', EditorDir+'\data\Editor.wad:TEXTURES\P2POINT');
- g_CreateTextureWAD('AREA_DMPOINT', EditorDir+'\data\Editor.wad:TEXTURES\DMPOINT');
- g_CreateTextureWAD('AREA_REDPOINT', EditorDir+'\data\Editor.wad:TEXTURES\REDPOINT');
- g_CreateTextureWAD('AREA_BLUEPOINT', EditorDir+'\data\Editor.wad:TEXTURES\BLUEPOINT');
+ g_CreateTextureWAD('PREVIEW', EditorDir+'data/Editor.wad:TEXTURES\CHECKERS');
+ g_CreateTextureWAD('NOTEXTURE', EditorDir+'data/Game.wad:TEXTURES\NOTEXTURE');
+
+ g_CreateTextureWADSize('AREA_REDFLAG', EditorDir+'data/Game.wad:TEXTURES\FLAGRED', 0, 0, 64, 64);
+ g_CreateTextureWADSize('AREA_BLUEFLAG', EditorDir+'data/Game.wad:TEXTURES\FLAGBLUE', 0, 0, 64, 64);
+ g_CreateTextureWADSize('AREA_DOMFLAG', EditorDir+'data/Game.wad:TEXTURES\FLAGDOM', 0, 0, 64, 64);
+
+ g_CreateTextureWADSize('MONSTER_DEMON', EditorDir+'data/Game.wad:MTEXTURES\DEMON_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_IMP', EditorDir+'data/Game.wad:MTEXTURES\IMP_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_ZOMBY', EditorDir+'data/Game.wad:MTEXTURES\ZOMBY_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_SERG', EditorDir+'data/Game.wad:MTEXTURES\SERG_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_CYBER', EditorDir+'data/Game.wad:MTEXTURES\CYBER_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_CGUN', EditorDir+'data/Game.wad:MTEXTURES\CGUN_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_BARON', EditorDir+'data/Game.wad:MTEXTURES\BARON_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_KNIGHT', EditorDir+'data/Game.wad:MTEXTURES\KNIGHT_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_CACO', EditorDir+'data/Game.wad:MTEXTURES\CACO_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_SOUL', EditorDir+'data/Game.wad:MTEXTURES\SOUL_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_PAIN', EditorDir+'data/Game.wad:MTEXTURES\PAIN_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_SPIDER', EditorDir+'data/Game.wad:MTEXTURES\SPIDER_SLEEP', 0, 0, 256, 128);
+ g_CreateTextureWADSize('MONSTER_BSP', EditorDir+'data/Game.wad:MTEXTURES\BSP_SLEEP', 0, 0, 128, 64);
+ g_CreateTextureWADSize('MONSTER_MANCUB', EditorDir+'data/Game.wad:MTEXTURES\MANCUB_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_SKEL', EditorDir+'data/Game.wad:MTEXTURES\SKEL_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_VILE', EditorDir+'data/Game.wad:MTEXTURES\VILE_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_FISH', EditorDir+'data/Game.wad:MTEXTURES\FISH_SLEEP', 0, 0, 32, 32);
+ g_CreateTextureWADSize('MONSTER_BARREL', EditorDir+'data/Game.wad:MTEXTURES\BARREL_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_ROBO', EditorDir+'data/Game.wad:MTEXTURES\ROBO_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_MAN', EditorDir+'data/Game.wad:MTEXTURES\MAN_SLEEP', 0, 0, 64, 64);
+
+ g_CreateTextureWADSize('ITEM_BLUESPHERE', EditorDir+'data/Game.wad:TEXTURES\SBLUE', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_WHITESPHERE', EditorDir+'data/Game.wad:TEXTURES\SWHITE', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_ARMORGREEN', EditorDir+'data/Game.wad:TEXTURES\ARMORGREEN', 0, 0, 32, 16);
+ g_CreateTextureWADSize('ITEM_ARMORBLUE', EditorDir+'data/Game.wad:TEXTURES\ARMORBLUE', 0, 0, 32, 16);
+ g_CreateTextureWADSize('ITEM_INVUL', EditorDir+'data/Game.wad:TEXTURES\INVUL', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_BOTTLE', EditorDir+'data/Game.wad:TEXTURES\BOTTLE', 0, 0, 16, 32);
+ g_CreateTextureWADSize('ITEM_HELMET', EditorDir+'data/Game.wad:TEXTURES\HELMET', 0, 0, 16, 16);
+ g_CreateTextureWADSize('ITEM_INVIS', EditorDir+'data/Game.wad:TEXTURES\INVIS', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_WEAPON_FLAMETHROWER', EditorDir+'data/Game.wad:TEXTURES\FLAMETHROWER', 0, 0, 64, 32);
+ g_CreateTextureWADSize('ITEM_AMMO_FUELCAN', EditorDir+'data/Game.wad:TEXTURES\FUELCAN', 0, 0, 16, 32);
+
+ g_CreateTextureWAD('ITEM_MEDKIT_SMALL', EditorDir+'data/Game.wad:TEXTURES\MED1');
+ g_CreateTextureWAD('ITEM_MEDKIT_LARGE', EditorDir+'data/Game.wad:TEXTURES\MED2');
+ g_CreateTextureWAD('ITEM_WEAPON_SAW', EditorDir+'data/Game.wad:TEXTURES\SAW');
+ g_CreateTextureWAD('ITEM_WEAPON_PISTOL', EditorDir+'data/Game.wad:TEXTURES\PISTOL');
+ g_CreateTextureWAD('ITEM_WEAPON_KASTET', EditorDir+'data/Game.wad:TEXTURES\KASTET');
+ g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN1', EditorDir+'data/Game.wad:TEXTURES\SHOTGUN1');
+ g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN2', EditorDir+'data/Game.wad:TEXTURES\SHOTGUN2');
+ g_CreateTextureWAD('ITEM_WEAPON_CHAINGUN', EditorDir+'data/Game.wad:TEXTURES\MGUN');
+ g_CreateTextureWAD('ITEM_WEAPON_ROCKETLAUNCHER', EditorDir+'data/Game.wad:TEXTURES\RLAUNCHER');
+ g_CreateTextureWAD('ITEM_WEAPON_PLASMA', EditorDir+'data/Game.wad:TEXTURES\PGUN');
+ g_CreateTextureWAD('ITEM_WEAPON_BFG', EditorDir+'data/Game.wad:TEXTURES\BFG');
+ g_CreateTextureWAD('ITEM_WEAPON_SUPERPULEMET', EditorDir+'data/Game.wad:TEXTURES\SPULEMET');
+ g_CreateTextureWAD('ITEM_AMMO_BULLETS', EditorDir+'data/Game.wad:TEXTURES\CLIP');
+ g_CreateTextureWAD('ITEM_AMMO_BULLETS_BOX', EditorDir+'data/Game.wad:TEXTURES\AMMO');
+ g_CreateTextureWAD('ITEM_AMMO_SHELLS', EditorDir+'data/Game.wad:TEXTURES\SHELL1');
+ g_CreateTextureWAD('ITEM_AMMO_SHELLS_BOX', EditorDir+'data/Game.wad:TEXTURES\SHELL2');
+ g_CreateTextureWAD('ITEM_AMMO_ROCKET', EditorDir+'data/Game.wad:TEXTURES\ROCKET');
+ g_CreateTextureWAD('ITEM_AMMO_ROCKET_BOX', EditorDir+'data/Game.wad:TEXTURES\ROCKETS');
+ g_CreateTextureWAD('ITEM_AMMO_CELL', EditorDir+'data/Game.wad:TEXTURES\CELL');
+ g_CreateTextureWAD('ITEM_AMMO_CELL_BIG', EditorDir+'data/Game.wad:TEXTURES\CELL2');
+ g_CreateTextureWAD('ITEM_AMMO_BACKPACK', EditorDir+'data/Game.wad:TEXTURES\BPACK');
+ g_CreateTextureWAD('ITEM_KEY_RED', EditorDir+'data/Game.wad:TEXTURES\KEYR');
+ g_CreateTextureWAD('ITEM_KEY_GREEN', EditorDir+'data/Game.wad:TEXTURES\KEYG');
+ g_CreateTextureWAD('ITEM_KEY_BLUE', EditorDir+'data/Game.wad:TEXTURES\KEYB');
+ g_CreateTextureWAD('ITEM_OXYGEN', EditorDir+'data/Game.wad:TEXTURES\OXYGEN');
+ g_CreateTextureWAD('ITEM_SUIT', EditorDir+'data/Game.wad:TEXTURES\SUIT');
+ g_CreateTextureWAD('ITEM_MEDKIT_BLACK', EditorDir+'data/Game.wad:TEXTURES\BMED');
+ g_CreateTextureWAD('ITEM_JETPACK', EditorDir+'data/Game.wad:TEXTURES\JETPACK');
+
+ g_CreateTextureWAD('AREA_PLAYERPOINT1', EditorDir+'data/Editor.wad:TEXTURES\P1POINT');
+ g_CreateTextureWAD('AREA_PLAYERPOINT2', EditorDir+'data/Editor.wad:TEXTURES\P2POINT');
+ g_CreateTextureWAD('AREA_DMPOINT', EditorDir+'data/Editor.wad:TEXTURES\DMPOINT');
+ g_CreateTextureWAD('AREA_REDPOINT', EditorDir+'data/Editor.wad:TEXTURES\REDPOINT');
+ g_CreateTextureWAD('AREA_BLUEPOINT', EditorDir+'data/Editor.wad:TEXTURES\BLUEPOINT');
end;
procedure FreeData();
end;
procedure FreeData();