Subversion Repositories spacemission

Rev

Rev 14 | Rev 17 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 14 Rev 15
Line 43... Line 43...
43
  LevelEditorLength := 0;
43
  LevelEditorLength := 0;
44
end;
44
end;
45
 
45
 
46
procedure TLevelData.Load(filename: string);
46
procedure TLevelData.Load(filename: string);
47
var
47
var
48
  sl1: TStringList;
48
  sl: TStringList;
49
  curline: integer;
49
  curline: integer;
50
  ergebniss: string;
50
  ergebniss: string;
51
  e: TEnemyAdvent;
51
  e: TEnemyAdvent;
52
begin
52
begin
53
  sl1 := TStringList.Create;
53
  sl := TStringList.Create;
54
  try
54
  try
55
    sl1.LoadFromFile(filename);
55
    sl.LoadFromFile(filename);
56
    curline := 0;
56
    curline := 0;
57
 
57
 
58
    ergebniss := sl1.Strings[curline]; Inc(curline);
58
    ergebniss := sl.Strings[curline]; Inc(curline);
59
    if ergebniss = '; SpaceMission 1.0' then
59
    if ergebniss = '; SpaceMission 1.0' then
60
    begin
60
    begin
61
      ergebniss := sl1.Strings[curline]; Inc(curline);
61
      ergebniss := sl.Strings[curline]; Inc(curline);
62
      Assert(ergebniss = '; LEV-File');
62
      if ergebniss <> '; LEV-File' then
-
 
63
      begin
-
 
64
        raise Exception.Create('Dies ist keine SpaceMission Level-Datei');
-
 
65
      end;
63
 
66
 
64
      ergebniss := sl1.Strings[curline]; Inc(curline);
67
      ergebniss := sl.Strings[curline]; Inc(curline);
65
      LevelEditorLength := StrToInt(ergebniss);
68
      LevelEditorLength := StrToInt(ergebniss);
66
 
69
 
67
      while curline < sl1.Count do
70
      while curline < sl.Count do
68
      begin
71
      begin
69
        ergebniss := sl1.Strings[curline]; Inc(curline);
72
        ergebniss := sl.Strings[curline]; Inc(curline);
70
        e.enemyType := TEnemyType(strtoint(ergebniss));
73
        e.enemyType := TEnemyType(strtoint(ergebniss));
71
        ergebniss := sl1.Strings[curline]; Inc(curline);
74
        ergebniss := sl.Strings[curline]; Inc(curline);
72
        e.x := strtoint(ergebniss);
75
        e.x := strtoint(ergebniss);
73
        ergebniss := sl1.Strings[curline]; Inc(curline);
76
        ergebniss := sl.Strings[curline]; Inc(curline);
74
        e.y := strtoint(ergebniss);
77
        e.y := strtoint(ergebniss);
75
        ergebniss := sl1.Strings[curline]; Inc(curline);
78
        ergebniss := sl.Strings[curline]; Inc(curline);
76
        e.lifes := strtoint(ergebniss);
79
        e.lifes := strtoint(ergebniss);
77
 
80
 
78
        SetLength(EnemyAdventTable, Length(EnemyAdventTable)+1);
81
        SetLength(EnemyAdventTable, Length(EnemyAdventTable)+1);
79
        EnemyAdventTable[Length(EnemyAdventTable)-1] := e;
82
        EnemyAdventTable[Length(EnemyAdventTable)-1] := e;
80
      end;
83
      end;
Line 83... Line 86...
83
    begin
86
    begin
84
      // TODO: Support 0.2, 0.3, 0.4
87
      // TODO: Support 0.2, 0.3, 0.4
85
      raise Exception.CreateFmt('Level-Format "%s" nicht unterstützt', [Copy(ergebniss, 3, Length(ergebniss)-2)]);
88
      raise Exception.CreateFmt('Level-Format "%s" nicht unterstützt', [Copy(ergebniss, 3, Length(ergebniss)-2)]);
86
    end;
89
    end;
87
  finally
90
  finally
88
    FreeAndNil(sl1);
91
    FreeAndNil(sl);
89
  end;
92
  end;
90
end;
93
end;
91
 
94
 
92
procedure TLevelData.Save(filename: string);
95
procedure TLevelData.Save(filename: string);
-
 
96
var
-
 
97
  sl: TStringList;
-
 
98
  i: integer;
-
 
99
begin
-
 
100
  sl := TStringList.Create;
-
 
101
  try
-
 
102
    sl.Add('; SpaceMission 1.0');
-
 
103
    sl.Add('; LEV-File');
-
 
104
    sl.Add(IntToStr(LevelEditorLength));
-
 
105
    for i := 0 to Length(EnemyAdventTable)-1 do
93
begin
106
    begin
94
  // TODO: Implement and use everywhere (Hint: Search for FCompVersion)!
107
      sl.Add(IntToStr(Ord(EnemyAdventTable[i].enemyType)));
-
 
108
      sl.Add(IntToStr(EnemyAdventTable[i].x));
-
 
109
      sl.Add(IntToStr(EnemyAdventTable[i].y));
-
 
110
      sl.Add(IntToStr(EnemyAdventTable[i].lifes));
-
 
111
    end;
-
 
112
    sl.SaveToFile(filename);
-
 
113
  finally
-
 
114
    FreeAndNil(sl);
-
 
115
  end;
95
end;
116
end;
96
 
117
 
97
end.
118
end.