index 1a9a5d17cf94586abe4342432928179dc90060d6..93de6b08a86c090249a64a2029ba5c1471c434a1 100644 (file)
--- a/src/shared/MAPREADER.pas
+++ b/src/shared/MAPREADER.pas
implementation
uses
implementation
uses
- SysUtils, BinEditor;
+ SysUtils, BinEditor, MAPDEF;
var
NNF_PureName: String; // Èìÿ òåêñòóðû áåç öèôð â êîíöå
var
NNF_PureName: String; // Èìÿ òåêñòóðû áåç öèôð â êîíöå
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
- b, Size: LongWord;
+ b, Size: NativeUInt;
begin
Result := nil;
begin
Result := nil;
if TempDataBlocks = nil then Exit;
if TempDataBlocks = nil then Exit;
- size := SizeOf(TAreaRec_1);
+ size := SizeOf_TAreaRec_1;
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
- CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ mb_Read_TAreaRec_1(Result[High(Result)], Pointer(NativeUInt(TempDataBlocks[a].Data)+b*size)^, size);
end;
TempDataBlocks := nil;
end;
TempDataBlocks := nil;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
- b, Size: LongWord;
+ b, Size: NativeUInt;
begin
Result := nil;
begin
Result := nil;
if TempDataBlocks = nil then Exit;
if TempDataBlocks = nil then Exit;
- size := SizeOf(TItemRec_1);
+ size := SizeOf_TItemRec_1;
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
- CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ mb_Read_TItemRec_1(Result[High(Result)], Pointer(NativeUInt(TempDataBlocks[a].Data)+b*size)^, size);
end;
TempDataBlocks := nil;
end;
TempDataBlocks := nil;
if TempDataBlocks = nil then Exit;
if TempDataBlocks = nil then Exit;
- CopyMemory(@Result, TempDataBlocks[0].Data, SizeOf(TMapHeaderRec_1));
+ //CopyMemory(@Result, TempDataBlocks[0].Data, SizeOf(TMapHeaderRec_1));
+ mb_Read_TMapHeaderRec_1(Result, TempDataBlocks[0].Data^, SizeOf_TMapHeaderRec_1);
TempDataBlocks := nil;
end;
TempDataBlocks := nil;
end;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
- b, Size: LongWord;
+ b, Size: NativeUInt;
begin
Result := nil;
begin
Result := nil;
if TempDataBlocks = nil then Exit;
if TempDataBlocks = nil then Exit;
- size := SizeOf(TMonsterRec_1);
+ size := SizeOf_TMonsterRec_1;
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
- CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ mb_Read_TMonsterRec_1(Result[High(Result)], Pointer(NativeUInt(TempDataBlocks[a].Data)+b*size)^, size);
end;
TempDataBlocks := nil;
end;
TempDataBlocks := nil;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
- b, Size: LongWord;
+ b, Size: NativeUInt;
begin
Result := nil;
begin
Result := nil;
if TempDataBlocks = nil then Exit;
if TempDataBlocks = nil then Exit;
- size := SizeOf(TPanelRec_1);
+ size := SizeOf_TPanelRec_1;
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
- CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ mb_Read_TPanelRec_1(Result[High(Result)], Pointer(NativeUInt(TempDataBlocks[a].Data)+b*size)^, size);
end;
TempDataBlocks := nil;
end;
TempDataBlocks := nil;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
- b, Size: LongWord;
+ b, Size: NativeUInt;
begin
Result := nil;
begin
Result := nil;
if TempDataBlocks = nil then Exit;
if TempDataBlocks = nil then Exit;
- size := SizeOf(TTextureRec_1);
+ size := SizeOf_TTextureRec_1;
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
- CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ mb_Read_TTextureRec_1(Result[High(Result)], Pointer(NativeUInt(TempDataBlocks[a].Data)+b*size)^, size);
end;
TempDataBlocks := nil;
end;
TempDataBlocks := nil;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
var
TempDataBlocks: TDataBlocksArray;
a: Integer;
- b, Size: LongWord;
+ b: NativeUInt;
+ Size: LongWord;
+ trdata: TTriggerData;
begin
Result := nil;
begin
Result := nil;
if TempDataBlocks = nil then Exit;
if TempDataBlocks = nil then Exit;
- size := SizeOf(TTriggerRec_1);
+ size := SizeOf_TTriggerRec_1;
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
for a := 0 to High(TempDataBlocks) do
for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
begin
SetLength(Result, Length(Result)+1);
- CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+ mb_Read_TTriggerRec_1(Result[High(Result)], Pointer(NativeUInt(TempDataBlocks[a].Data)+b*size)^, size);
+ if (Result[High(Result)].TriggerType <> 0) then
+ begin
+ // preprocess trigger data
+ ZeroMemory(@trdata, SizeOf(trdata));
+ mb_Read_TriggerData(trdata, Result[High(Result)].TriggerType, Result[High(Result)].DATA, sizeof(trdata));
+ Result[High(Result)].DATA := trdata.Default;
+ end;
end;
TempDataBlocks := nil;
end;
TempDataBlocks := nil;
if FDataBlocks[a].Block.BlockType = BlocksType then
begin
SetLength(Result, Length(Result)+1);
if FDataBlocks[a].Block.BlockType = BlocksType then
begin
SetLength(Result, Length(Result)+1);
- Result[High(Result)] := FDataBlocks[a];
+ Result[High(Result)] := FDataBlocks[a];
end;
end;
end;
end;
function TMapReader.LoadMap(Data: Pointer): Boolean;
var
function TMapReader.LoadMap(Data: Pointer): Boolean;
var
- adr: LongWord;
+ adr: NativeUInt;
_id: Integer;
Sign: array[0..2] of Char;
Ver: Byte;
_id: Integer;
Sign: array[0..2] of Char;
Ver: Byte;
end;
adr := 3;
end;
adr := 3;
- CopyMemory(@Ver, Pointer(LongWord(Data)+adr), 1);
+ CopyMemory(@Ver, Pointer(NativeUInt(Data)+adr), 1);
FVersion := Ver;
if Ver > HandledVersion() then
begin
FVersion := Ver;
if Ver > HandledVersion() then
begin
SetLength(FDataBlocks, Length(FDataBlocks)+1);
_id := High(FDataBlocks);
SetLength(FDataBlocks, Length(FDataBlocks)+1);
_id := High(FDataBlocks);
- CopyMemory(@FDataBlocks[_id].Block, Pointer(LongWord(Data)+adr), SizeOf(TBlock));
+ CopyMemory(@FDataBlocks[_id].Block, Pointer(NativeUInt(Data)+adr), SizeOf(TBlock));
adr := adr+SizeOf(TBlock);
FDataBlocks[_id].Data := GetMemory(FDataBlocks[_id].Block.BlockSize);
adr := adr+SizeOf(TBlock);
FDataBlocks[_id].Data := GetMemory(FDataBlocks[_id].Block.BlockSize);
- CopyMemory(FDataBlocks[_id].Data, Pointer(LongWord(Data)+adr), FDataBlocks[_id].Block.BlockSize);
+ CopyMemory(FDataBlocks[_id].Data, Pointer(NativeUInt(Data)+adr), FDataBlocks[_id].Block.BlockSize);
adr := adr+FDataBlocks[_id].Block.BlockSize;
until FDataBlocks[_id].Block.BlockType = BLOCK_NONE;
adr := adr+FDataBlocks[_id].Block.BlockSize;
until FDataBlocks[_id].Block.BlockType = BLOCK_NONE;