for j := 0 to mw-1 do
begin
_id := Matrix^[i*mw + j].id;
if _Flt^[_id] then
begin
_x := Round(X + j*SizeX);
_y := Round(Y + i*SizeY);
if not( (_x › Obj.x + Obj.Width - Obj.Right)or(_y › Obj.y + Obj.Height - Obj.Bottom)or(_x + SizeX ‹ Obj.X + Obj.Left)or(_y + SizeY ‹ Obj.Y + Obj.Top) ) then
begin
Result := true;
rid := _id;
robj := Matrix^[i*mw + j];
exit;
end;
end;
end;
Result := false;
end;
procedure TGE_GridSpaceObject.Save(const FileName:string);
begin
end;
procedure TGE_GridSpaceObject.Load(const FileName:string);
var //fs:PStream;
lst:PStrList;
i,j:integer;
s:string;
begin
if copy(FileName, length(FileName)-2, 3) = 'txt' then
begin
lst := NewStrList;
lst.LoadFromFile(GetStartDir + FileName);
mw := length(lst.Items[0]);
mh := lst.Count;
GetMem(Matrix, mh*mw*sizeof(TGE_Object));
FillChar(Matrix^, mh*mw*sizeof(TGE_Object), 0);
for i := 0 to lst.Count-1 do
begin
s := lst.Items[i];
for j := 1 to mw do
SetCell(j - 1, i, ord(s[j]) - ord('0'));
end;
lst.free;
end
else
begin
//fs := NewReadFileStream(FileName);
//GetMem(Matrix, fs.Size);
//fs.read(Matrix^, fs.Size);
//fs.Free;
end;
end;
И тут я заметил , что у процедуры сохранения отсутствует код... Ну как это понимать, а? Может есть обновление элемента , где уже добавили удалённую часть кода... Просто я пол часа думал, что я идиот и где-то с матрицей накосячил, а тут оказалось: просто недоделанный элемент!