Subversion Repositories jumper

Compare Revisions

Regard whitespace Rev 10 → Rev 11

/trunk/Main.pas
68,6 → 68,7
LevelTotalStones: Integer;
LevelRemovedStones: Integer;
JumpHistory: TStringList;
Level: TLevel;
procedure LoadSettings;
procedure SaveSettings;
procedure RestartLevel;
224,6 → 225,8
MUndo.Enabled := false;
 
SetLength(LookupFieldCoordinateArray, 0);
 
if Assigned(Level) then FreeAndNil(Level);
end;
 
procedure TMainForm.LoadPictureForType(FieldType: TFieldType; Picture: TPicture);
298,8 → 301,8
begin
result := fsError;
case t of
ftLocked: result := fsLocked;
ftLockedWithTab: result := fsLocked;
ftFullSpace: result := fsLocked;
ftHalfSpace: result := fsLocked;
ftEmpty: result := fsAvailable;
ftGreen: result := fsStone;
ftYellow: result := fsStone;
370,7 → 373,7
if MayJump(x, y, x, y+2) then exit;
if MayJump(x, y, x, y-2) then exit;
 
if AllowDiagonalMoves then
if Level.GetGameMode = gmDiagonal then
begin
if MayJump(x, y, x-2, y-2) then exit;
if MayJump(x, y, x+2, y-2) then exit;
414,7 → 417,7
JumpHistory.Add(Format(LNG_JUMP_LOG, [SourceTag+1, s.x+1, s.y+1, DestTag+1, d.x+1, d.y+1]));
 
{$REGION 'Stein entfernen und Punkte vergeben'}
if AllowDiagonalMoves then
if Level.GetGameMode = gmDiagonal then
begin
if (s.X-2 = d.X) and (s.Y-2 = d.Y) and (FieldState(s.X-1, s.Y-1) = fsStone) then RemoveStone(s.X-1, s.Y-1, true);
if (s.X-2 = d.X) and (s.Y+2 = d.Y) and (FieldState(s.X-1, s.Y+1) = fsStone) then RemoveStone(s.X-1, s.Y+1, true);
485,7 → 488,7
if FieldState(DestX, DestY) <> fsAvailable then exit;
 
// Check 2: Befindet sich ein Stein zwischen Source und Destination und ist der Abstand 2?
if AllowDiagonalMoves then
if Level.GetGameMode = gmDiagonal then
begin
if (SourceX-2 = DestX) and (SourceY-2 = DestY) and (FieldState(SourceX-1, SourceY-1) = fsStone) then result := true;
if (SourceX-2 = DestX) and (SourceY+2 = DestY) and (FieldState(SourceX-1, SourceY+1) = fsStone) then result := true;
525,7 → 528,7
newField: TField;
index: integer;
begin
if (t.Typ = ftLocked) or (t.Typ = ftLockedWithTab) then exit;
if (t.Typ = ftFullSpace) or (t.Typ = ftHalfSpace) then exit;
 
index := Length(LookupFieldCoordinateArray);
 
576,7 → 579,7
halftabs := 0;
for j := Low(LevelArray[i]) to High(LevelArray[i]) do
begin
if LevelArray[i][j].Typ = ftLockedWithTab then inc(halftabs);
if LevelArray[i][j].Typ = ftHalfSpace then inc(halftabs);
DrawField(j, i, LevelArray[i][j], halftabs);
end;
cur_x := High(LevelArray[i]) + 1;
629,13 → 632,12
 
procedure TMainForm.NewGame(Filename: string);
var
LevelString: String;
LevelArray: TLevelArray;
begin
DestroyLevel;
LevelFile := Filename;
LevelString := ReadFile(LevelFile);
LevelArray := LevelStringToLevelArray(LevelString, true);
Level := TLevel.Create(LevelFile);
LevelArray := Level.LevelStringToLevelArray(true);
if Length(LevelArray) = 0 then Exit;
BuildPlayground(LevelArray);
if not AreJumpsPossible then
712,6 → 714,7
 
procedure TMainForm.FormDestroy(Sender: TObject);
begin
DestroyLevel;
JumpHistory.Free;
end;