1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117:
| procedure TSokubahn.LoadFileMap(pFileName:String); function GetDefaultDir(Str,de:String): String; var LevelVerzeichnis:String; begin LevelVerzeichnis:=ExtractFileDir(pFileName); if Pos('.',str) > 0 then if Pos('~',str) > 0 then result:=getexedir + 'default\image\' + GetToken(str,'~',2) else result:=LevelVerzeichnis + 'image\' + str else if Pos('~',str) > 0 then result:=getexedir + 'default\image\' + GetToken(str,'~',2) + de else result:=LevelVerzeichnis + 'image\' + str + de ; end; var x,y,i:Integer; Level:TStringList; str,str2,TextIndex:String; LevelVerzeichnis:String; begin LevelVerzeichnis:=ExtractFileDir(pFileName); Level:=TStringList.Create;
if FileExists( pFileName ) = True then Level.LoadFromFile(pFileName) else begin ShowMessage('Level Datei: "' + pFileName + '"' + ' nicht gefunden !' ); Exit; end;
with Level do begin if Strings[0] <> LevelHeader then begin ShowMessage('Keine Sokubahn 1.0 Level Datei'); Exit; end; for i:=IndexOf('LevelOptionen {')+1 to Indexof('LevelOptionen }')-1 do begin Str:=UpperCase(Trim(GetToken(Strings[i],':',1))); Str2:=UpperCase(Trim(GetToken(Strings[i],':',2)));
if Str = UpperCase('Music') then GameSound:=TSound.create(Str2,LevelVerzeichnis + '\Music\', '.mid',None);
if Str = UpperCase('TexturIndex') then TextIndex:=Str2; if Str = UpperCase('MapSize') then SetMapSize(640 div StrToInt(Str2)-1,384 div StrToInt(Str2)-1,StrToInt(Str2) );
if Str = UpperCase('Grafik_File') then GLXImageList.Items.LoadFromFile(GetDefaultDir( str2,'.grf') )
end; ZielIndex:=StrToInt(GetToken( TextIndex,',',4)); for y:=indexof('Draw_Karte {')+1 to IndexOf('Draw_Karte }')-1 do begin for x:=0 to MapX+1 do begin str:=Strings[y];
if (str[x] = '#') and (Map[x-1,y-indexof('Draw_Karte {')-1].typ = None) then begin Map[x-1,y-indexof('Draw_Karte {')-1].typ:=wand; Map[x-1,y-indexof('Draw_Karte {')-1].tex:=StrToInt(GetToken(TextIndex,',',1)); Continue; end else begin if (upperCase(Str[x]) = 'R') and (Map[x-1,y-indexof('Draw_Karte {')-1].typ = None) then begin Randomize; Map[x-1,y-indexof('Draw_Karte {')-1].typ:=wand; Map[x-1,y-indexof('Draw_Karte {')-1].tex:=Random(3); Continue; end else begin if (Str[x] <> '') and (str[x] in ['0'..'9']) and (Map[x-1,y-indexof('Draw_Karte {')-1].typ = None) then begin Map[x-1,y-indexof('Draw_Karte {')-1].typ:=wand; Map[x-1,y-indexof('Draw_Karte {')-1].tex:=StrToInt(str[x]); Continue; end end; end;
if str[x] = '-' then begin if Map[x-1,y-indexof('Draw_Karte {')-1].typ = None then begin Map[x-1,y-indexof('Draw_Karte {')-1].typ:=Kasten;
Map[x-1,y-indexof('Draw_Karte {')-1].Tex:=StrToInt(GetToken(TextIndex,',',2)); Continue; end; end;
if str[x] = '.' then begin if Map[x-1,y-indexof('Draw_Karte {')-1].typ = None then begin Map[x-1,y-indexof('Draw_Karte {')-1].typ2:=Ziel; Map[x-1,y-indexof('Draw_Karte {')-1].Tex2:=StrToInt(GetToken(TextIndex,',',3)); Continue; end; end;
if str[x] = 'S' then begin if StartPositionen = '' then StartPositionen:= StartPositionen + IntToStr(x-1) + ',' + IntToStr(y-indexof('Draw_Karte {')-1) else StartPositionen:= StartPositionen + '|' +IntToStr(x-1) + ',' + IntToStr(y-indexof('Draw_Karte {')-1); Continue; end;
end; end; end; Player.x:=PlayerRandomPos(StartPositionen).x; Player.y:=PlayerRandomPos(StartPositionen).Y; Player.Tex:=StrToInt(GetToken(TextIndex,',',4));
GameSound.PlayMusikFile(10); end; |