Subversion Repositories spacemission

Compare Revisions

No changes between revisions

Regard whitespace Rev 90 → Rev 89

/SpaceMission.ENU
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/ENU/LevMain.dfm
File deleted
/ENU/LevMain.dfn
File deleted
/ENU/LevEdit_ENU.bdsproj
File deleted
/ENU/LevEdit_DRC.rcn
File deleted
/ENU/SpaceMission_DRC.rcn
File deleted
/ENU/SpaceMission_ENU.bdsproj
File deleted
/ENU/GamCheat.dfm
File deleted
/ENU/GamCheat.dfn
File deleted
/ENU/LevEdit.dpr
File deleted
/ENU/SpaceMission.dpr
File deleted
/ENU/GamSplash.dfm
File deleted
/ENU/GamSplash.dfn
File deleted
/ENU/LevEdit_DRC.rc
File deleted
/ENU/ComHilfe.dfm
File deleted
/ENU/ComHilfe.dfn
File deleted
/ENU/ComInfo.dfm
File deleted
/ENU/ComInfo.dfn
File deleted
/ENU/LevEdit.dof
File deleted
/ENU/SpaceMission.dof
File deleted
/ENU/LevSplash.dfm
File deleted
/ENU/GamSpeicherung.dfm
File deleted
/ENU/LevOptions.dfm
File deleted
/ENU/LevSplash.dfn
File deleted
/ENU/GamSpeicherung.dfn
File deleted
/ENU/LevOptions.dfn
File deleted
/ENU/LevEdit_DRC.RES
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/ENU/SpaceMission_DRC.RES
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/ENU/GamMain.dfm
File deleted
/ENU/GamMain.dfn
File deleted
/ENU/LevSpeicherung.dfm
File deleted
/ENU/SpaceMission_DRC.rc
File deleted
/ENU/LevSpeicherung.dfn
File deleted
/LevEdit.ENU
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/SpaceMission.drc
File deleted
/LevEdit.drc
File deleted
/GamMain.pas
192,7 → 192,6
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite; ALifes: integer); override;
destructor Destroy; override;
end;
 
TItemClass = class of TItem;
296,12 → 295,12
{ Diverse temporäre Variablen }
Crash2: integer;
EnemyCounter: integer;
FBoss: TEnemyBoss;
Crash: boolean;
crashsound: boolean;
public
FNextScene: TGameScene;
FScore: Integer;
FBoss: TEnemyBoss;
FNotSave: boolean;
FLife: integer;
FLevel: integer;
1115,12 → 1114,6
end;
end;
 
destructor TEnemyBoss.Destroy;
begin
MainForm.FBoss := nil;
inherited;
end;
 
procedure TEnemyBoss.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
1194,6 → 1187,7
if FCounter>4000 then
begin
FState := pesDeadVanished;
MainForm.FBoss := nil; // important because Dead will Free the object, so we cannot rely on FState
Dead;
end;
end;
1862,7 → 1856,7
 
procedure TMainForm.NewLevel(lev: integer);
resourcestring
SLevelInvalid = 'Die Datei für Level %d ist ungültig. Level wird übersprungen!';
SLevelInvalid = 'Das Level Nr. %d ist ungültig!'+#13#10+'Das Programm wird beendet.';
var
act: integer;
Enemies: array[1..32] of TEnemyType;
1988,7 → 1982,7
LevelData.LoadFromFile(levFile.fileLocation);
except
showmessage(Format(SLevelInvalid, [lev]));
ResetLevelData; // empty level = the player will continue with the next level
ResetLevelData;
end;
end;
{$ENDREGION}
2000,10 → 1994,6
TitleWasPressed: TDxInputState = isButton32;
 
procedure TMainForm.SceneTitle;
resourcestring
SNormalGame = 'Normales Spiel';
SRandomGame = 'Zufalls-Level';
SLevelEditor = 'Level-Editor';
var
Logo: TPictureCollectionItem;
colo1, colo2: TColor;
2049,11 → 2039,11
colo2 := clYellow;
end;
DXDraw.Surface.Canvas.Font.Color := colo1;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-152, (dxdraw.surfaceheight div 2)-52, SNormalGame);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-152, (dxdraw.surfaceheight div 2)-52, 'Normales Spiel');
if FGameMode = gmLevels then
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, (dxdraw.surfaceheight div 2)-52, '>');
DXDraw.Surface.Canvas.Font.Color := colo2;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-150, (dxdraw.surfaceheight div 2)-50, SNormalGame);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-150, (dxdraw.surfaceheight div 2)-50, 'Normales Spiel');
if FGameMode = gmLevels then
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, (dxdraw.surfaceheight div 2)-50, '>');
{$ENDREGION}
2070,11 → 2060,11
colo2 := clYellow;
end;
DXDraw.Surface.Canvas.Font.Color := colo1;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-152, (dxdraw.surfaceheight div 2)-2, SRandomGame);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-152, (dxdraw.surfaceheight div 2)-2, 'Zufallslevel');
if FGameMode = gmRandom then
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-187, (dxdraw.surfaceheight div 2)-2, '>');
DXDraw.Surface.Canvas.Font.Color := colo2;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-150, (dxdraw.surfaceheight div 2), SRandomGame);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-150, (dxdraw.surfaceheight div 2), 'Zufallslevel');
if FGameMode = gmRandom then
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, (dxdraw.surfaceheight div 2), '>');
{$ENDREGION}
2091,11 → 2081,11
colo2 := clYellow;
end;
DXDraw.Surface.Canvas.Font.Color := colo1;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-152, (dxdraw.surfaceheight div 2)+48, SLevelEditor);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-152, (dxdraw.surfaceheight div 2)+48, 'Level-Editor');
if FGameMode = gmEditor then
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, (dxdraw.surfaceheight div 2)+48, '>');
DXDraw.Surface.Canvas.Font.Color := colo2;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-150, (dxdraw.surfaceheight div 2)+50, SLevelEditor);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-150, (dxdraw.surfaceheight div 2)+50, 'Level-Editor');
if FGameMode = gmEditor then
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, (dxdraw.surfaceheight div 2)+50, '>');
{$ENDREGION}
2103,9 → 2093,9
{ if (FBlink div 300) mod 2=0 then
begin
DXDraw.Surface.Canvas.Font.Color := clGreen;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-187, dxdraw.surfaceheight-117, SWeiterMitLeertaste);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-187, dxdraw.surfaceheight-117, 'Weiter mit Leertaste');
DXDraw.Surface.Canvas.Font.Color := clLime;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, dxdraw.surfaceheight-115, SWeiterMitLeertaste);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, dxdraw.surfaceheight-115, 'Weiter mit Leertaste');
end; }
BlinkUpdate;
DXDraw.Surface.Canvas.Release;
2237,7 → 2227,7
{$REGION 'Anzeige Einheiten und Boss Leben'}
 
tmpEnemyAnzeige := EnemyCounter{Auf Bildschirm} + FRestEnemies{In der Warteschlange};
if Assigned(FBoss) and (FBoss.State<>pesDeadVanished) then Dec(tmpEnemyAnzeige);
if Assigned(FBoss) then Dec(tmpEnemyAnzeige);
 
if Assigned(FBoss) and (FBoss.Life>0) then
begin
2396,8 → 2386,6
end;
 
procedure TMainForm.SceneNewLevel;
resourcestring
SLevelScene = 'Level %d';
begin
DXDraw.Surface.Fill(0);
 
2404,16 → 2392,16
DXDraw.Surface.Canvas.Brush.Style := bsClear;
DXDraw.Surface.Canvas.Font.Size := 40;
DXDraw.Surface.Canvas.Font.Color := clMaroon;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-(83+(length(inttostr(flevel))*22)), 98, Format(SLevelScene, [flevel]));
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-(83+(length(inttostr(flevel))*22)), 98, 'Level '+inttostr(flevel));
DXDraw.Surface.Canvas.Font.Color := clRed;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-(81+(length(inttostr(flevel))*22)), 100, Format(SLevelScene, [flevel]));
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-(81+(length(inttostr(flevel))*22)), 100, 'Level '+inttostr(flevel));
if (FBlink div 300) mod 2=0 then
begin
DXDraw.Surface.Canvas.Font.Size := 30;
DXDraw.Surface.Canvas.Font.Color := clOlive;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-187, dxdraw.surfaceheight-117, SWeiterMitLeertaste);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-187, dxdraw.surfaceheight-117, 'Weiter mit Leertaste');
DXDraw.Surface.Canvas.Font.Color := clYellow;
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, dxdraw.surfaceheight-115, SWeiterMitLeertaste);
DXDraw.Surface.Canvas.Textout((dxdraw.surfaceWidth div 2)-185, dxdraw.surfaceheight-115, 'Weiter mit Leertaste');
end;
BlinkUpdate;
DXDraw.Surface.Canvas.Release;
/Global.pas
3,7 → 3,7
interface
 
const
ProgramVersion = '1.2.2';
ProgramVersion = '1.2.1';
LevEditRasterW = 48;
LevEditRasterH = 32;
LevEditRows = 15; // Attention: if you change this, you also need to change the LevEditor GUI!
/Help/DE_General.md
File deleted
/Help/EN_General.md
File deleted
\ No newline at end of file
/Help/DE_Changelog.md
File deleted
/Help/EN_Changelog.md
File deleted
/Help/Neuerungen.md
0,0 → 1,73
# Changelog
 
SpaceMission 1.2.2:
- BUGFIX: Items können nun auch eingesammelt werden, wenn man einen infinite lives Cheat aktiviert hat
- BUGFIX: Fehlerkorrektur bei der Anzeige der restlichen Einheiten bei Missionsende
 
SpaceMission 1.2.1:
- Neue Einheit: Medikit Item
- Zufallslevel:
- Alle 250 Einheiten erhält man ein Medikit
- Ab Level 25 steigt die Anzahl an auftretenden stärkeren Gegnertypen
- BUGFIX: Nach dem der Boss besiegt wurde, war die angezeigte Gegner-Anzeige eins zu wenig oder ist verschwunden
- BUGFIX: Leveleditor Speicherndialog Frage "Level ersetzen?" Abfrage kommt nun wieder, wenn man ein Selbsterstelltes Level überschreiben möchte
- BUGFIX: Die Geschwindigkeitseinstellung im Menü wurde falsch angezeigt, wenn das Spiel gestartet wurde
- BUGFIX: Zufallslevel: Manche Einheiten sind nicht aufgetaucht, da sie zu weit unten generiert wurden. Korrigiert.
- Mit einer Registry-Änderung kann die Geschwindigkeit nun beliebig eingestellt werden. Registry Schlüssel "Computer\HKEY_CURRENT_USER\Software\ViaThinkSoft\SpaceMission\Settings", Schalter "GameSpeed". Standardwerte: Leicht 10, Mittel 16, Schwer 22, Meister 33.
 
SpaceMission 1.2:
- Inhaltliche Änderungen am Spiel:
- Boss besiegen gibt nun 10.000 Punkte anstelle 1.000
- "Neu starten" Menüpunkt startet nun das Level neu mit den bei Levelstart vorhandenen Punkten und Leben, anstelle von ganz vorne neu zu beginnen
- Anzeige Restliche Einheiten ist nun Einzeige Einheiten gesamt, d.h. auch die, die auf dem Bildschirm sind (außer Boss)
- Man kann nun nicht mehr "Game over" gehen. Das Level startet neu, wenn man gestorben ist.
- Aus technischen Gründen ist es nicht mehr möglich zu speichern, wenn die Anzeige "Level ..., Weiter mit Leertaste" kommt. Man kann jedoch das Level starten und sofort dann mit F4 speichern.
- Zufallslevel:
- Ab sofort 1 Einheit weniger pro Level
- Ab sofort Level 1-4 ohne Boss, Level 5-9 mit Boss am Ende, und ab Level 10 Boss in der Mitte vom Level
- Bei höheren Levels ist die Lebensenergie von Gegnern nun auf 10 gedeckelt
- Attackierer 2 kommt nun häufiger vor
- Zufallslevel größer als Level 25 ist nun möglich.
- Änderungen am Level Editor:
- "Quelltext" Fenster entfernt
- Gegner-Typ-Name steht nun in der Statusleiste unten
- Der Leveleditor hat nun eine "Level testen" Funktion
- Technische Änderungen:
- Es wird nun DirectMusic anstelle MCI zum Abspielen von Musik verwendet. Der Klang ist besser und es gibt weniger Lags.
- Fenster sind nun in Bildschirm-Mitte und nicht mehr Desktop-Mitte (das macht einen Unterschied bei Multi-Monitor-Systemen).
- DPlayX.dll wird nicht länger geladen, sodass Windows 11 keine Warnung zeigt, dass DirectPlay nicht installiert ist
- Spielstände und eigene Levels werden in den Ordner "Gespeicherte Spiele" gesichert (anstelle in den mittlerweile geschützten Programmdateien-Ordner)
- Einstellungen werden in die Windows Registry gesichert anstelle in eine INI-Datei
- Quellcode stark verbessert und "redactored"
- Neue LEV und SAV Dateiformate.
- LEV und SAV Dateien teilen sich das gleiche Format.
- Es gibt keinen Zwang mehr, die Gegner nach X-Koordinaten zu sortieren.
- Jeder Gegner wird in einer einzelnen Zeile dargestellt; das Format ist daher sehr übersichtlich
- Spielstände beinhalten nun die Original-Leveldateien, sodass das wiederherzustellende Spiel exakt gleich aussieht
- Eigenschaften "Level-Name" und "Level Autor" hinzugefügt.
- "ESC" Taste pausiert das Spiel und öffnet das Menü
- "Level-Konverter" entfernt. Anstelle lesen das Level-Editor und das Spiel nun alle Formate seit SpaceMission 0.2 ein.
- Bugfix: Pause wurde nicht in Titelzeile geschrieben, wenn das Spiel pausiert wurde
- Bugfix: Wenn man pause gemacht hat und fenster wechselt und wieder zurückwechselt, wurde Pause aufgehoben.
- Bugfix: Zwei Fenster wurden in der Taskleiste angezeigt
- "Vollbild" und "Breitbild" Feature entfernt, da es nie richtig funktioniert hat
- Level Editor kann nun über das Hauptmenü aufgerufen werden
 
Version 1.1:
- Bugfixes
- Veröffentlichung als OpenSource
 
Version 1.0:
- Bugfixes
- Die erste vollständige Version von SpaceMission.
- Ein neuer Leveleditor wurde programmiert.
 
Version 0.4:
- Bugfixes
- Nun auch mit einem Leveleditor.
 
Version 0.3:
- Bugfixes
 
Version 0.2:
- Die erste Beta-Version von SpaceMission.
/Help/Allgemeines.md
0,0 → 1,98
# SpaceMission 1.2.1 Dokumentation
 
Bitte auch lesen: [Was ist neu in Version 1.2.1?](Neuerungen.md)
 
## Beschreibung
SpaceMission ist ein klassisches Weltraumspiel, beidem Sie durch einen Kometenhagel fliegen,
UFOs und andere Raumschiffe abschießen müssen. Es gibt 31 Levels sowie
Zufallslevels, d.h. Levels die vom Computer durch Zufall erstellt werden.
Mit dem eingebauten Leveleditor können Sie auch Ihre eigenen Levels
erstellen. Viel Spaß mit SpaceMission.
 
### Gute Levels gesucht:
Wenn Sie gute Levels erstellt haben und diese in der nächsten Version veröffentlichen möchten,
senden Sie sie bitte per E-Mail an info@daniel-marschall.de
 
## Bedienung/Steuerung
### SpaceMission
Im Menü wählen Sie den Menüpunkt mit den Pfeiltasten aus. Drücken Sie die Leertaste,
um fortzufahren. Im Spiel steuern Sie das Raumschiff mit den Pfeiltasten. Mit der
Leertaste schießen Sie.
 
### Leveleditor
Wählen Sie rechts einen Einheitentyp aus, unten können Sie die Leben einstellen.
Kometen sind unzerstörbar und haben somit keine Leben. Anschließend setzen Sie mit
der Linken Maustaste eine Einheit auf das Spielfeld. Klicken Sie mit der rechten
Maustaste auf eine Einheit, um sie zu löschen. Wenn Sie die Leben einer Einheit löschen
möchten, müssen Sie sie löschen und wieder neu setzen.
 
## Spielstände
Vergessen Sie nicht, Ihren Spielstand zu sichern.
Sie können das Spiel sichern, sobald ein Level gestartet hat.
Im Spielstand sind Punktestand und Leben sowie eine Kopie des Levels gespeichert.
Punktestand und Leben beziehen sich auf den **Anfang** des Levels. Sie können
nicht in der Mitte eines Levels sichern.
 
## Quelltext
Der Quelltext des Spiels ist öffentlich. SpaceMission kann von jedem verändert
oder weiterentwickelt werden. Voraussetzung ist die Programmier-Umgebung Embarcadero Delphi.
 
Quelltext unter www.github.com/danielmarschall/spacemission
 
 
## Aufbau von Spielstand- und Leveldateien
Savegame- und Level-Dateien teilen das gleiche Format; eine Savedatei ist eine erweiterte Leveldatei.
 
[Beschreibung der OID auf OIDplus](https://hosted.oidplus.com/viathinksoft/?goto=oid%3A1.3.6.1.4.1.37476.2.8.1.1)
 
[1.3.6.1.4.1.37476.2.8.1.1]
Score ... (nur vorhanden wenn Datei ein Spielstand ist)
Lives ... (nur vorhanden wenn Datei ein Spielstand ist)
Level ... (nur vorhanden wenn Datei ein Spielstand ist)
Mode ... (nur vorhanden wenn Datei ein Spielstand ist; 1=Normal, 2=Zufall)
Name ...
Author ...
Width ... (Standard 1200; nur für Leveleditor relevant)
Enemy <Typ> <XCoord> <YCoord> <Leben>
Enemy <Typ> <XCoord> <YCoord> <Leben>; Kommentarzeile am Ende einer Gegner-Zeile
Enemy <Typ> <XCoord> <YCoord> <Leben>
Enemy ...
; Kommentar-Zeile
 
Anmerkungen:
- Alle Level-Dateien müssen den Namen "Level [Level-Nr].lev" haben, bzw. alle Spielstanddateien müssen "[Name].sav" lauten.
- Die Reihenfolge der Zeilen ist beliebig. Die erste Zeile muss jedoch exakt stimmen.
- Leere Zeilen sind erlaubt
- Das Schlüsselwort `Enemy` gilt sowohl für Gegner als auch für Items.
- `<Typ>` = Gegner Typ
 
* 1=Attacker (blau)
* 2=Attacker2 (braun)
* 3=Attacker3 (rot)
* 4=Meteor
* 5=UFO (grün)
* 6=UFO2 (orange)
* 7=Boss
* 8=Medikit
 
- `<XCoord>` = Gegner X-Koordinate (muss durch 48 teilbar sein, wenn Level mit Leveleditor bearbeitet werden soll)
- `<YCoord>` = Gegner Y-Koordinate (muss durch 32 teilbar sein, wenn Level mit Leveleditor bearbeitet werden soll)
- `<Leben>` = Gegner Leben (keine relevanz für Kometen und Items)
 
## Cheat
 
Bitte beachten Sie, dass die Verwendung von Cheats Ihnen den Spielspaß verderben kann!
 
Wenn Sie dennoch Cheats anwenden möchten:
 
- Cheat für unendliche Leben: Countrysänger der "Man in Black" in 1971 veröffentlicht hat.
 
## Lizenzbedingungen
 
Lizenziert unter den Bedingungen der Apache 2.0 Lizenz,
d.h. die Weitergabe ist ausdrücklich erwünscht!
 
## Autor
 
Homepage: www.daniel-marschall.de
E-Mail: info@daniel-marschall.de
/GamMain.dfm
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/LevMain.dfm
40,6 → 40,9
Height = 19
Panels = <>
SimplePanel = True
SimpleText =
' Zeigen Sie mit dem Mauszeiger auf eine Einheit, um deren Eigens' +
'chaften anzuzeigen...'
OnMouseMove = DXDrawMouseMove
end
object SidePanel: TPanel
6104,13 → 6107,13
object Hilfe1: TMenuItem
Caption = 'Allgemeines'
GroupIndex = 1
Hint = 'Help\DE_General.md'
Hint = 'Help\Allgemeines.md'
OnClick = HilfeTopicClick
end
object WasgibtesNeues1: TMenuItem
Caption = 'Was gibt es Neues?'
GroupIndex = 1
Hint = 'Help\DE_Changelog.md'
Hint = 'Help\Neuerungen.md'
OnClick = HilfeTopicClick
end
object N4: TMenuItem
/LevEdit.dproj
66,7 → 66,6
<VerInfo_Locale>1031</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0</VerInfo_Keys>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_OutputDRCFile>true</DCC_OutputDRCFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
177,22 → 176,6
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k290.bpl">Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp290.bpl">Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server</Excluded_Packages>
</Excluded_Packages>
<Language>
<Language Name="ProjectLang">$00000407</Language>
<Language Name="ActiveLang">ENU</Language>
</Language>
<Resource_DLL_Projects>
<Resource_DLL_Projects Name="Item0">Englisch (Vereinigte Staaten)*$00000409*ENU*ENU</Resource_DLL_Projects>
</Resource_DLL_Projects>
<RDP_Source_Files>
<RDP_Source_Files Name="Item0">LevMain.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item1">LevSplash.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item2">LevSpeicherung.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item3">ComInfo.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item4">LevOptions.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item5">ComHilfe.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item6">LevEdit.drc</RDP_Source_Files>
</RDP_Source_Files>
</Delphi.Personality>
<Platforms>
<Platform value="Win32">True</Platform>
/_InnoSetup/SpaceMission.iss
28,7 → 28,6
SignedUninstaller=yes
 
[Languages]
Name: en; MessagesFile: "compiler:Default.isl"
Name: de; MessagesFile: "compiler:Languages\German.isl"
 
[LangOptions]
41,8 → 40,6
[Files]
Source: "..\SpaceMission.exe"; DestDir: "{app}"; Flags: ignoreversion signonce
Source: "..\LevEdit.exe"; DestDir: "{app}"; Flags: ignoreversion signonce
Source: "..\SpaceMission.enu"; DestDir: "{app}"; Flags: ignoreversion signonce
Source: "..\LevEdit.enu"; DestDir: "{app}"; Flags: ignoreversion signonce
Source: "..\Help\*.md"; DestDir: "{app}\Help"; Flags: ignoreversion
Source: "..\Help\*.css"; DestDir: "{app}\Help"; Flags: ignoreversion
Source: "..\DirectX\Graphics.dxg"; DestDir: "{app}\DirectX"; Flags: ignoreversion
65,13 → 62,6
[Run]
Filename: "{app}\SpaceMission.exe"; Description: "SpaceMission starten"; Flags: nowait postinstall skipifsilent
 
[Registry]
; TODO: Also do this to the "Jumper" game
Root: HKCU; Subkey: "Software\Embarcadero\Locales"; ValueType: string; ValueName: "{app}\SpaceMission.exe"; ValueData: "ENU"; Languages: en
Root: HKCU; Subkey: "Software\Embarcadero\Locales"; ValueType: string; ValueName: "{app}\SpaceMission.exe"; ValueData: "DE"; Languages: de
Root: HKCU; Subkey: "Software\Embarcadero\Locales"; ValueType: string; ValueName: "{app}\LevEdit.exe"; ValueData: "ENU"; Languages: en
Root: HKCU; Subkey: "Software\Embarcadero\Locales"; ValueType: string; ValueName: "{app}\LevEdit.exe"; ValueData: "DE"; Languages: de
 
[Code]
function InitializeSetup(): Boolean;
begin
/LevMain.pas
122,9 → 122,6
 
{$R *.DFM}
 
resourcestring
status_info = 'Zeigen Sie mit dem Mauszeiger auf eine Einheit, um deren Eigenschaften anzuzeigen...';
 
type
TBackground = class(TBackgroundSprite)
strict protected
243,8 → 240,6
 
{ VCL-Ersatz ende }
 
StatusBar.SimpleText := ' ' + status_info;
 
LivesEdit.MinValue := 1;
LivesEdit.MaxValue := MaxPossibleEnemyLives;
LivesEdit.Value := 1;
754,6 → 749,7
procedure TMainForm.DXDrawMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
resourcestring
status_info = 'Zeigen Sie mit dem Mauszeiger auf eine Einheit, um deren Eigenschaften anzuzeigen...';
status_lives = 'Leben: ';
status_nolives = 'Einheit hat keine Lebensangabe';
SUnknownEnemyType = '???';
/ComLevelReader.pas
329,7 → 329,7
procedure TLevelData.LoadFromStrings(sl: TStrings);
resourcestring
SInvalidLevelFile = 'Level-Format nicht unterstützt oder Datei ist beschädigt';
SEnemyTypeNotImplemented = 'Gegner-Typ %d wird nicht unterstützt (Alte Spielversion?)';
SEnemyTypeNotImplemented = 'Enemy Type %d not implemented';
var
curline: integer;
z, act: integer;
/SpaceMission.dproj
54,7 → 54,6
<VerInfo_Locale>1031</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0</VerInfo_Keys>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_OutputDRCFile>true</DCC_OutputDRCFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
156,22 → 155,6
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k290.bpl">Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp290.bpl">Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server</Excluded_Packages>
</Excluded_Packages>
<Language>
<Language Name="ProjectLang">$00000407</Language>
<Language Name="ActiveLang">ENU</Language>
</Language>
<Resource_DLL_Projects>
<Resource_DLL_Projects Name="Item0">Englisch (Vereinigte Staaten)*$00000409*ENU*ENU</Resource_DLL_Projects>
</Resource_DLL_Projects>
<RDP_Source_Files>
<RDP_Source_Files Name="Item0">GamMain.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item1">GamSplash.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item2">GamSpeicherung.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item3">ComInfo.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item4">GamCheat.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item5">ComHilfe.dfm</RDP_Source_Files>
<RDP_Source_Files Name="Item6">SpaceMission.drc</RDP_Source_Files>
</RDP_Source_Files>
</Delphi.Personality>
<Platforms>
<Platform value="Win32">True</Platform>
/_SpacemissionGroup.groupproj
9,12 → 9,6
<Projects Include="SpaceMission.dproj">
<Dependencies/>
</Projects>
<Projects Include="ENU\LevEdit_ENU.bdsproj">
<Dependencies/>
</Projects>
<Projects Include="ENU\SpaceMission_ENU.bdsproj">
<Dependencies/>
</Projects>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Default.Personality.12</Borland.Personality>
41,32 → 35,14
<Target Name="SpaceMission:Make">
<MSBuild Projects="SpaceMission.dproj" Targets="Make"/>
</Target>
<Target Name="LevEdit_ENU">
<MSBuild Projects="ENU\LevEdit_ENU.bdsproj"/>
</Target>
<Target Name="LevEdit_ENU:Clean">
<MSBuild Projects="ENU\LevEdit_ENU.bdsproj" Targets="Clean"/>
</Target>
<Target Name="LevEdit_ENU:Make">
<MSBuild Projects="ENU\LevEdit_ENU.bdsproj" Targets="Make"/>
</Target>
<Target Name="SpaceMission_ENU">
<MSBuild Projects="ENU\SpaceMission_ENU.bdsproj"/>
</Target>
<Target Name="SpaceMission_ENU:Clean">
<MSBuild Projects="ENU\SpaceMission_ENU.bdsproj" Targets="Clean"/>
</Target>
<Target Name="SpaceMission_ENU:Make">
<MSBuild Projects="ENU\SpaceMission_ENU.bdsproj" Targets="Make"/>
</Target>
<Target Name="Build">
<CallTarget Targets="LevEdit;SpaceMission;LevEdit_ENU;SpaceMission_ENU"/>
<CallTarget Targets="LevEdit;SpaceMission"/>
</Target>
<Target Name="Clean">
<CallTarget Targets="LevEdit:Clean;SpaceMission:Clean;LevEdit_ENU:Clean;SpaceMission_ENU:Clean"/>
<CallTarget Targets="LevEdit:Clean;SpaceMission:Clean"/>
</Target>
<Target Name="Make">
<CallTarget Targets="LevEdit:Make;SpaceMission:Make;LevEdit_ENU:Make;SpaceMission_ENU:Make"/>
<CallTarget Targets="LevEdit:Make;SpaceMission:Make"/>
</Target>
<Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
</Project>
/ComInfo.dfm
170,12 → 170,12
'Sicherheitszertifikat von HickelSOFT Huth GmbH.'
''
'Verwendete Komponenten: (un)DelphiX'
'Quellcode: http://www.micrel.cz/Dx/'
'Source: http://www.micrel.cz/Dx/'
'(C) Copyright 1996-2000 by Hiroyuki Hori'
'(C) Copyright 2004-2023 by Jaro Benes.'
''
'sowie Delphi MarkDown'
'Quellcode: https://github.com/grahamegrieve/delphi-markdown'
'Source: https://github.com/grahamegrieve/delphi-markdown'
'(c) 2011+, Health Intersections Pty Ltd'
'Apache 2.0 Lizenz'
''
/.gitignore.txt
4,7 → 4,7
*.bpl
*.bpi
*.dcp
#*.drc
*.drc
*.map
*.dres
*.rsm