Subversion Repositories spacemission

Compare Revisions

No changes between revisions

Regard whitespace Rev 1 → Rev 2

/SplCheat.dcu
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
/LevText.dcu
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
/SplInfo.dcu
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
/ComMain.dcu
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
/LevInfo.pas
File deleted
/SpaceMission.identcache
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
/SplSplash.dcu
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
/SplMain.dcu
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.bdsproj.local
File deleted
/Compiler.identcache
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
/LevInfo.dfm
File deleted
/LevEdit.identcache
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
/SplText.dcu
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
/LevInfo.dcu
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
/LevSpeicherung.dcu
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
/SplSpeicherung.dcu
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
/LevSplash.dcu
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
/LevMain.dcu
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
/Unit1.dcu
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
/_Projektgruppe.bdsgroup.local
File deleted
/LevOptions.dcu
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
/Compiler.bdsproj.local
File deleted
/LevEdit.bdsproj.local
File deleted
/VCL_PJVERSIONINFO/PJVersionInfo.dcu
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
/VCL_PJVERSIONINFO/PJVersionInfo.pas
File deleted
/VCL_PJVERSIONINFO/PJVersionInfo.htm
File deleted
/LevSource.dcu
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
/SplInfo.dfm
9,15 → 9,13
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Height = -12
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
OnCreate = FormCreate
OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
PixelsPerInch = 106
TextHeight = 13
object HomeLbl: TLabel
Left = 32
38,9 → 36,9
object FirmaLbl: TLabel
Left = 88
Top = 8
Width = 31
Width = 74
Height = 13
Caption = 'Firma'
Caption = 'ViaThinkSoft'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
52,9 → 50,9
object NameLbl: TLabel
Left = 104
Top = 24
Width = 28
Width = 66
Height = 13
Caption = 'Name'
Caption = 'SpaceMission'
Transparent = True
end
object VersionLbl: TLabel
76,9 → 74,9
object CopyrightLbl: TLabel
Left = 8
Top = 80
Width = 44
Width = 137
Height = 13
Caption = 'Copyright'
Caption = '(C) 2001 - 2011 ViaThinkSoft'
Transparent = True
end
object Copyright2Lbl: TLabel
108,10 → 106,10
object URL1: TLabel
Left = 152
Top = 120
Width = 118
Width = 155
Height = 13
Cursor = crHandPoint
Caption = 'info@daniel-marschall.de'
Caption = 'daniel-marschall@viathinksoft.de'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlue
Font.Height = -11
121,7 → 119,7
Transparent = True
OnClick = URL1Click
end
object ElPopupButton1: TButton
object OkBtn: TButton
Left = 208
Top = 160
Width = 107
128,6 → 126,6
Height = 25
Caption = 'OK'
TabOrder = 0
OnClick = ElPopupButton1Click
OnClick = OkBtnClick
end
end
/LevEdit.dpr
14,9 → 14,10
LevText in 'LevText.pas' {TextForm},
LevSplash in 'LevSplash.pas' {SplashForm},
LevSpeicherung in 'LevSpeicherung.pas' {SpeicherungForm},
LevInfo in 'LevInfo.pas' {InfoForm},
SplInfo in 'SplInfo.pas' {InfoForm},
LevSource in 'LevSource.pas' {SourceForm},
LevOptions in 'LevOptions.pas' {LevelForm};
LevOptions in 'LevOptions.pas' {LevelForm},
Global in 'Global.pas';
 
{$R *.RES}
 
/_InnoSetup/Output/setup.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/_InnoSetup/SpaceMission.iss
9,7 → 9,7
AppName=SpaceMission
AppVerName=SpaceMission 1.1
AppVersion=1.1
AppCopyright=© Copyright 2001 - 2007 ViaThinkSoft.
AppCopyright=© Copyright 2001 - 2011 ViaThinkSoft.
AppPublisher=ViaThinkSoft
AppPublisherURL=http://www.viathinksoft.de/
AppSupportURL=http://www.daniel-marschall.de/
17,7 → 17,7
DefaultDirName={pf}\SpaceMission
DefaultGroupName=SpaceMission
VersionInfoCompany=ViaThinkSoft
VersionInfoCopyright=© Copyright 2001 - 2007 ViaThinkSoft.
VersionInfoCopyright=© Copyright 2001 - 2011 ViaThinkSoft.
VersionInfoDescription=SpraceMission Setup
VersionInfoTextVersion=1.0.0.0
VersionInfoVersion=1.1
/SplMain.pas
5,7 → 5,7
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, MMSystem, Dialogs,
StdCtrls, ExtCtrls, Menus, SplInfo, DIB, DXClass, DXSprite, DXDraws, DXInput,
DXSounds, PJVersionInfo, INIFiles, shellapi, wininet;
DXSounds, INIFiles, ShellAPI, wininet;
 
type
TGameScene = (
20,7 → 20,8
TGameInterval = (
giMittel,
giLeicht,
giSchwer
giSchwer,
giMaster
);
 
TMusicTrack = (
43,158 → 44,6
sfLevIntro
);}
 
TMainForm = class(TDXForm)
MainMenu: TMainMenu;
Spiel: TMenuItem;
GameStart: TMenuItem;
GamePause: TMenuItem;
Beenden: TMenuItem;
Einstellungen: TMenuItem;
OptionFullScreen: TMenuItem;
OptionMusic: TMenuItem;
Leer2: TMenuItem;
Leer4: TMenuItem;
Hilfe: TMenuItem;
OptionSound: TMenuItem;
Mitarbeiter: TMenuItem;
Leer3: TMenuItem;
Spielstand: TMenuItem;
Leer5: TMenuItem;
Neustart: TMenuItem;
OptionBreitbild: TMenuItem;
Spielgeschwindigkeit: TMenuItem;
Leicht: TMenuItem;
Mittel: TMenuItem;
Schwer: TMenuItem;
Informationen: TMenuItem;
Leer6: TMenuItem;
Leer1: TMenuItem;
Cheat: TMenuItem;
AufUpdatesprfen1: TMenuItem;
procedure DXDrawFinalize(Sender: TObject);
procedure DXDrawInitialize(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DXTimerTimer(Sender: TObject; LagCount: Integer);
procedure DXTimerActivate(Sender: TObject);
procedure DXTimerDeactivate(Sender: TObject);
procedure OptionFullScreenClick(Sender: TObject);
procedure DXDrawInitializing(Sender: TObject);
procedure GameStartClick(Sender: TObject);
procedure GamePauseClick(Sender: TObject);
procedure BeendenClick(Sender: TObject);
procedure OptionSoundClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure OptionMusicClick(Sender: TObject);
procedure MitarbeiterClick(Sender: TObject);
procedure SpielstandClick(Sender: TObject);
procedure NeustartClick(Sender: TObject);
procedure OptionBreitbildClick(Sender: TObject);
procedure LeichtClick(Sender: TObject);
procedure MittelClick(Sender: TObject);
procedure SchwerClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InformationenClick(Sender: TObject);
procedure CheatClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure AufUpdatesprfen1Click(Sender: TObject);
private
FInterval: TGameInterval;
FScene: TGameScene;
FMusic: TMusicTrack;
FBlink: DWORD;
FBlinkTime: DWORD;
FFrame, FAngle, FCounter, FEnemyAdventPos: Integer;
procedure StartScene(Scene: TGameScene);
procedure EndScene;
procedure BlinkStart;
procedure BlinkUpdate;
procedure StartSceneTitle;
procedure SceneTitle;
procedure EndSceneTitle;
procedure StartSceneMain;
procedure SceneMain;
procedure EndSceneMain;
procedure StartSceneGameOver;
procedure SceneGameOver;
procedure EndSceneGameOver;
procedure StartSceneWin;
procedure SceneWin;
procedure EndSceneWin;
procedure StartSceneNewLevel;
procedure SceneNewLevel;
procedure EndSceneNewLevel;
public
FDirectory: string;
FEngineVersion: string;
FNextScene: TGameScene;
FScore: Integer;
FNotSave: boolean;
FLife: integer;
FLevel: integer;
FMenuItem: integer;
FBossLife: integer;
FRestEnemys: integer;
FCheat: boolean;
{ VCL-Ersatz }
dxdraw: TDxDraw;
imagelist: TDxImageList;
spriteengine: tdxspriteengine;
dxsound: tdxsound;
wavelist: tdxwavelist;
dxinput: tdxinput;
dxtimer: tdxtimer;
versioninfo: tpjversioninfo;
{ Level-Routinen }
procedure NewLevel(lev: integer);
procedure DeleteArray;
{ MCI-Routinen }
function StatusMusic(Name: TMusicTrack): string;
procedure PlayMusic(Name: TMusicTrack);
//procedure StopMusic(Name: TMusicTrack);
procedure PauseMusic(Name: TMusicTrack);
procedure ResumeMusic(Name: TMusicTrack);
procedure DestroyMusic(Name: TMusicTrack);
procedure OpenMusic(Name: TMusicTrack);
{ Sound-Routinen }
function SoundKarte: boolean;
procedure PlaySound(Name: string; Wait: Boolean);
{ Initialisiations-Routinen }
procedure DXInit;
procedure SoundInit;
procedure MusicInit;
{ Einstellungs-Routinen }
procedure LoadOptions;
procedure WriteOptions;
{ Farb-Routinen }
function ComposeColor(Dest, Src: TRGBQuad; Percent: Integer): TRGBQuad;
procedure PalleteAnim(Col: TRGBQuad; Time: Integer);
end;
 
var
MainForm: TMainForm;
 
const
conleicht = 650 div 60;
conmittel = 1000 div 60;
conschwer = 1350 div 60;
lives = 6;
FCompVersion = '1.0';
 
implementation
 
uses
SplSplash, SplSpeicherung, SplText, SplCheat;
 
const
FileError = 'Die Datei kann von SpaceMission nicht geöffnet werden!';
 
{$R *.DFM}
 
{$R WindowsXP.res}
 
type
 
TBackground = class(TBackgroundSprite)
private
FSpeed: Double;
229,6 → 78,7
procedure DoMove(MoveCount: Integer); override;
public
constructor Create(AParent: TSprite); override;
procedure FlyAway;
end;
 
TTamaSprite = class(TImageSprite)
249,7 → 99,7
FMode: Integer;
procedure Hit; virtual;
protected
procedure HitEnemy(Deaded: Boolean); virtual;
procedure HitEnemy(ADead: Boolean); virtual;
public
constructor Create(AParent: TSprite); override;
destructor Destroy; override;
267,7 → 117,7
TEnemyMeteor= class(TEnemy)
protected
procedure DoMove(MoveCount: Integer); override;
procedure HitEnemy(Deaded: Boolean); override;
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite); override;
end;
275,7 → 125,7
TEnemyUFO = class(TEnemy)
protected
procedure DoMove(MoveCount: Integer); override;
procedure HitEnemy(Deaded: Boolean); override;
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite); override;
end;
287,7 → 137,7
FOldTamaTime: Integer;
protected
procedure DoMove(MoveCount: Integer); override;
procedure HitEnemy(Deaded: Boolean); override;
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite); override;
end;
295,7 → 145,7
TEnemyAttacker = class(TEnemy)
protected
procedure DoMove(MoveCount: Integer); override;
procedure HitEnemy(Deaded: Boolean); override;
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite); override;
end;
308,7 → 158,7
FPutTama: Boolean;
protected
procedure DoMove(MoveCount: Integer); override;
procedure HitEnemy(Deaded: Boolean); override;
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite); override;
end;
320,7 → 170,7
FOldTamaTime: Integer;
protected
procedure DoMove(MoveCount: Integer); override;
procedure HitEnemy(Deaded: Boolean); override;
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite); override;
end;
334,28 → 184,180
waiter1, waiter2: integer;
protected
procedure DoMove(MoveCount: Integer); override;
procedure HitEnemy(Deaded: Boolean); override;
procedure HitEnemy(ADead: Boolean); override;
public
constructor Create(AParent: TSprite); override;
end;
 
TNoting = class(TImageSprite);
TNothing = class(TImageSprite);
 
TSpriteClass = class of TSprite;
 
TEnemyAdvent = record
c: TSpriteClass;
spriteClass: TSpriteClass;
x: extended;
y: extended;
l: integer;
lifes: integer;
end;
 
TMainForm = class(TDXForm)
MainMenu: TMainMenu;
Spiel: TMenuItem;
GameStart: TMenuItem;
GamePause: TMenuItem;
Beenden: TMenuItem;
Einstellungen: TMenuItem;
OptionFullScreen: TMenuItem;
OptionMusic: TMenuItem;
Leer2: TMenuItem;
Leer4: TMenuItem;
Hilfe: TMenuItem;
OptionSound: TMenuItem;
Mitarbeiter: TMenuItem;
Leer3: TMenuItem;
Spielstand: TMenuItem;
Leer5: TMenuItem;
Neustart: TMenuItem;
OptionBreitbild: TMenuItem;
Spielgeschwindigkeit: TMenuItem;
Leicht: TMenuItem;
Mittel: TMenuItem;
Schwer: TMenuItem;
Informationen: TMenuItem;
Leer6: TMenuItem;
Leer1: TMenuItem;
Cheat: TMenuItem;
CheckUpdates: TMenuItem;
Master: TMenuItem;
procedure DXDrawFinalize(Sender: TObject);
procedure DXDrawInitialize(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DXTimerTimer(Sender: TObject; LagCount: Integer);
procedure DXTimerActivate(Sender: TObject);
procedure DXTimerDeactivate(Sender: TObject);
procedure OptionFullScreenClick(Sender: TObject);
procedure DXDrawInitializing(Sender: TObject);
procedure GameStartClick(Sender: TObject);
procedure GamePauseClick(Sender: TObject);
procedure BeendenClick(Sender: TObject);
procedure OptionSoundClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure OptionMusicClick(Sender: TObject);
procedure MitarbeiterClick(Sender: TObject);
procedure SpielstandClick(Sender: TObject);
procedure NeustartClick(Sender: TObject);
procedure OptionBreitbildClick(Sender: TObject);
procedure LeichtClick(Sender: TObject);
procedure MittelClick(Sender: TObject);
procedure SchwerClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InformationenClick(Sender: TObject);
procedure CheatClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure CheckUpdatesClick(Sender: TObject);
procedure MasterClick(Sender: TObject);
private
ProgrammGestartet: boolean;
FInterval: TGameInterval;
FScene: TGameScene;
FMusic: TMusicTrack;
FBlink: DWORD;
FBlinkTime: DWORD;
FFrame, FAngle, FCounter, FEnemyAdventPos: Integer;
PlayerSprite: TPlayerSprite;
procedure StartScene(Scene: TGameScene);
procedure EndScene;
procedure BlinkStart;
procedure BlinkUpdate;
procedure StartSceneTitle;
procedure SceneTitle;
procedure EndSceneTitle;
procedure StartSceneMain;
procedure SceneMain;
procedure EndSceneMain;
procedure StartSceneGameOver;
procedure SceneGameOver;
procedure EndSceneGameOver;
procedure StartSceneWin;
procedure SceneWin;
procedure EndSceneWin;
procedure StartSceneNewLevel;
procedure SceneNewLevel;
procedure EndSceneNewLevel;
public
FNextScene: TGameScene;
FScore: Integer;
FNotSave: boolean;
FLife: integer;
FLevel: integer;
FMenuItem: integer;
FBossLife: integer;
FRestEnemys: integer;
FCheat: boolean;
{ VCL-Ersatz }
dxdraw: TDxDraw;
imagelist: TDxImageList;
spriteengine: tdxspriteengine;
dxsound: tdxsound;
wavelist: tdxwavelist;
dxinput: tdxinput;
dxtimer: tdxtimer;
{ Level-Routinen }
procedure NewLevel(lev: integer);
procedure DeleteArray;
{ MCI-Routinen }
function StatusMusic(Name: TMusicTrack): string;
procedure PlayMusic(Name: TMusicTrack);
//procedure StopMusic(Name: TMusicTrack);
procedure PauseMusic(Name: TMusicTrack);
procedure ResumeMusic(Name: TMusicTrack);
procedure DestroyMusic(Name: TMusicTrack);
procedure OpenMusic(Name: TMusicTrack);
{ Sound-Routinen }
function SoundKarte: boolean;
procedure PlaySound(Name: string; Wait: Boolean);
{ Initialisiations-Routinen }
procedure DXInit;
procedure SoundInit;
procedure MusicInit;
{ Einstellungs-Routinen }
procedure LoadOptions;
procedure WriteOptions;
{ Farb-Routinen }
function ComposeColor(Dest, Src: TRGBQuad; Percent: Integer): TRGBQuad;
procedure PalleteAnim(Col: TRGBQuad; Time: Integer);
end;
 
var
EnemyAdventTable: array[0..9999] of TEnemyAdvent;
MainForm: TMainForm;
 
const
conleicht = 650 div 60; // 10
conmittel = 1000 div 60; // 16
conschwer = 1350 div 60; // 22
conmaster = 2000 div 60; // 33
lives = 6;
 
implementation
 
uses
SplSplash, SplSpeicherung, SplText, SplCheat, Global;
 
resourcestring
FileError = 'Die Datei kann von SpaceMission nicht geöffnet werden!';
 
{$R *.DFM}
 
{$R WindowsXP.res}
 
var // TODO: irgendwo hinpacken. irgendwo!!!
EnemyAdventTable: array[0..9999] of TEnemyAdvent; // TODO: dyn
Crash2, ec: integer;
BossExists, Crash, crashsound, SpielerFliegtFort: boolean;
BossExists, Crash, crashsound: boolean;
pos: array[1..4] of integer;
enemys: array[1..27] of TSpriteClass;
levact: integer;
 
const
DXInputButton = [isButton1, isButton2, isButton3,
364,6 → 366,15
isButton19, isButton20, isButton21, isButton22, isButton23, isButton24, isButton25,
isButton26, isButton27, isButton28, isButton29, isButton30, isButton31, isButton32];
 
const // TODO: Auch für Enemies
PLAYER_MODE_NORMAL = 0;
PLAYER_MODE_DEAD = 1;
PLAYER_MODE_DEAD_VANISHED = 2;
PLAYER_MODE_FLYAWAY = 3;
PLAYER_MODE_ENTER = 4;
 
// TODO: Code komplett überarbeiten. Bessere Ableitungen machen
 
constructor TPlayerSprite.Create(AParent: TSprite);
begin
inherited Create(AParent);
376,7 → 387,7
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 15/1000;
FMode := 4;
FMode := PLAYER_MODE_ENTER;
end;
 
procedure TPlayerSprite.DoCollision(Sprite: TSprite; var Done: Boolean);
393,7 → 404,7
MainForm.PlaySound('Explosion', false);
Collisioned := false;
FCounter := 0;
FMode := 1;
FMode := PLAYER_MODE_DEAD;
Done := false;
Image := MainForm.ImageList.Items.Find('Explosion');
Width := Image.Width;
416,10 → 427,11
end;
 
procedure TPlayerSprite.DoMove(MoveCount: Integer);
const
WegduesKonstante = 1.75;
begin
inherited DoMove(MoveCount);
if SpielerFliegtFort then FMode := 3;
if FMode=0 then
if FMode=PLAYER_MODE_NORMAL then
begin
if isUp in MainForm.DXInput.States then Y := Y - (250/1000)*MoveCount;
if isDown in MainForm.DXInput.States then Y := Y + (250/1000)*MoveCount;
445,15 → 457,15
end;
end;
Collision;
end else if FMode=1 then
end else if FMode=PLAYER_MODE_DEAD then
begin
if FCounter>200 then
begin
FCounter := 0;
FMode := 2;
FMode := PLAYER_MODE_DEAD_VANISHED;
Visible := false;
end;
end else if FMode=2 then
end else if FMode=PLAYER_MODE_DEAD_VANISHED then
begin
if FCounter>1500 then
begin
462,9 → 474,10
MainForm.PalleteAnim(RGBQuad(0, 0, 0), 300);
Sleep(200);
end;
end else if FMode=3 then
end else if FMode=PLAYER_MODE_FLYAWAY then
begin
X := X + MoveCount*(300/1000);
// FUT: "Wusch" sound?
X := X + MoveCount*(300/1000) * (X/MainForm.DXDraw.Width + WegduesKonstante);
if X > MainForm.DXDraw.Width+Width then
begin
Dead;
473,14 → 486,19
MainForm.PlaySound('SceneMov', false);
MainForm.PalleteAnim(RGBQuad(0, 0, 0), 300);
end;
end else if FMode=4 then
end else if FMode = PLAYER_MODE_ENTER then
begin
X := X + MoveCount*(300/1000);
if X > 19 then FMode := 0;
if X > 19 then FMode := PLAYER_MODE_NORMAL;
end;
inc(FCounter, MoveCount);
end;
 
procedure TPlayerSprite.FlyAway;
begin
FMode := PLAYER_MODE_FLYAWAY;
end;
 
procedure TMainForm.DXInit;
begin
try
691,9 → 709,9
HitEnemy(False);
end;
 
procedure TEnemy.HitEnemy(Deaded: Boolean);
procedure TEnemy.HitEnemy(ADead: Boolean);
begin
if Deaded then MainForm.PlaySound('Explosion', False);
if ADead then MainForm.PlaySound('Explosion', False);
end;
 
constructor TEnemyUFO.Create(AParent: TSprite);
705,7 → 723,7
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 15/1000;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].l;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
end;
 
constructor TEnemy.Create(AParent: TSprite);
721,9 → 739,9
dec(ec);
end;
 
procedure TEnemyUFO.HitEnemy(Deaded: Boolean);
procedure TEnemyUFO.HitEnemy(ADead: Boolean);
begin
if Deaded then
if ADead then
begin
MainForm.PlaySound('Explosion', False);
FMode := 2;
771,9 → 789,9
inc(FCounter, MoveCount);
end;
 
procedure TEnemyUFO2.HitEnemy(Deaded: Boolean);
procedure TEnemyUFO2.HitEnemy(ADead: Boolean);
begin
if Deaded then
if ADead then
begin
MainForm.PlaySound('Explosion', False);
FMode := 2;
802,7 → 820,7
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 15/1000;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].l;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
end;
 
procedure TEnemyUFO.DoMove(MoveCount: Integer);
831,12 → 849,12
AnimLooped := True;
AnimSpeed := 15/1000;
PixelCheck := True;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].l;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
end;
 
procedure TEnemyAttacker.HitEnemy(Deaded: Boolean);
procedure TEnemyAttacker.HitEnemy(ADead: Boolean);
begin
if Deaded then
if ADead then
begin
MainForm.PlaySound('Explosion', False);
FMode := 2;
884,15 → 902,15
AnimSpeed := 15/1000;
PixelCheck := True;
Collisioned := False;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].l;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
MainForm.FBossLife := FLife;
waiter1 := 0;
waiter2 := 0;
end;
 
procedure TEnemyBoss.HitEnemy(Deaded: Boolean);
procedure TEnemyBoss.HitEnemy(ADead: Boolean);
begin
if Deaded then
if ADead then
begin
MainForm.PlaySound('Explosion', False);
FMode := 2;
990,12 → 1008,12
AnimLooped := True;
AnimSpeed := 15/1000;
PixelCheck := True;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].l;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
end;
 
procedure TEnemyAttacker2.HitEnemy(Deaded: Boolean);
procedure TEnemyAttacker2.HitEnemy(ADead: Boolean);
begin
if Deaded then
if ADead then
begin
MainForm.PlaySound('Explosion', False);
FMode := 2;
1065,9 → 1083,9
inc(FCounter, MoveCount);
end;
 
procedure TEnemyAttacker3.HitEnemy(Deaded: Boolean);
procedure TEnemyAttacker3.HitEnemy(ADead: Boolean);
begin
if Deaded then
if ADead then
begin
MainForm.PlaySound('Explosion', False);
FMode := 1;
1123,7 → 1141,7
AnimLooped := True;
AnimSpeed := 15/1000;
PixelCheck := True;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].l;
FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
end;
 
function TMainForm.SoundKarte: boolean;
1135,13 → 1153,9
var
Ergebnis: string;
daten: textfile;
i: integer;
punkt: integer;
ok: boolean;
begin
{ Beginne VCL-Ersatz }
versioninfo := tpjversioninfo.Create(self);
 
dxtimer := tdxtimer.Create(self);
dxtimer.Interval := 33;
dxtimer.OnActivate := DXTimerActivate;
1191,15 → 1205,7
 
{ Ende VCL-Ersatz }
 
punkt := 0;
FDirectory := extractfilepath(paramstr(0));
versioninfo.filename := paramstr(0);
for i := 1 to length(versioninfo.ProductVersion) do
begin
if copy(versioninfo.ProductVersion, i, 1) = '.' then inc(punkt);
if punkt < 2 then fengineversion := fengineversion+copy(versioninfo.ProductVersion, i, 1);
end;
Application.Title := 'SpaceMission '+FEngineVersion;
Application.Title := 'SpaceMission '+ProgramVersion;
LoadOptions;
DXInit;
SoundInit;
1211,7 → 1217,7
Reset(daten);
ok := true;
ReadLN(daten, Ergebnis);
if Ergebnis <> '; SpaceMission '+mainform.FEngineVersion then ok := false;
if Ergebnis <> '; SpaceMission '+ProgramVersion then ok := false;
ReadLN(daten, Ergebnis);
if ergebnis <> '; SAV-File' then ok := false;
if not ok then
1331,7 → 1337,7
Result := resStr;
end;
 
procedure TMainForm.AufUpdatesprfen1Click(Sender: TObject);
procedure TMainForm.CheckUpdatesClick(Sender: TObject);
var
temp: string;
begin
1342,7 → 1348,7
end
else
begin
if GetHTML('http://www.viathinksoft.de/update/?id=spacemission') <> '1.1d' then
if GetHTML('http://www.viathinksoft.de/update/?id=spacemission') <> ProgramVersion then
begin
if Application.MessageBox('Eine neue Programmversion ist vorhanden. Möchten Sie diese jetzt herunterladen?', 'Information', MB_YESNO + MB_ICONASTERISK) = ID_YES then
shellexecute(application.handle, 'open', pchar('http://www.viathinksoft.de/update/?id=@spacemission'), '', '', sw_normal);
1468,9 → 1474,6
DXTimer.Enabled := False;
end;
 
var
ProgrammGestartet: boolean;
 
procedure TMainForm.DXTimerActivate(Sender: TObject);
begin
Caption := Application.Title;
1557,6 → 1560,7
if FInterval = giLeicht then INIDatei.WriteInteger('Settings', 'Speed', 1);
if FInterval = giMittel then INIDatei.WriteInteger('Settings', 'Speed', 2);
if FInterval = giSchwer then INIDatei.WriteInteger('Settings', 'Speed', 3);
if FInterval = giMaster then INIDatei.WriteInteger('Settings', 'Speed', 4);
INIDatei.Free;
end;
 
1584,6 → 1588,11
FInterval := giSchwer;
Schwer.checked := true;
end;
if INIDatei.ReadInteger('Settings', 'Speed', 2) = 4 then
begin
FInterval := giMaster;
Master.checked := true;
end;
INIDatei.Free;
WriteOptions;
end;
1704,7 → 1713,6
i, j: Integer;}
begin
sleep(500);
SpielerFliegtFort := false;
FCounter := 0;
NewLevel(FLevel);
BossExists := false;
1711,7 → 1719,7
PlayMusic(mtGame);
FEnemyAdventPos := 1;
FFrame := -4;
TPlayerSprite.Create(SpriteEngine.Engine);
PlayerSprite := TPlayerSprite.Create(SpriteEngine.Engine);
with TBackground.Create(SpriteEngine.Engine) do
begin
SetMapSize(1, 1);
1854,20 → 1862,19
var
i: integer;
begin
for i := 1 to 9999 do
for i := Low(EnemyAdventTable) to High(EnemyAdventTable) do
begin
EnemyAdventTable[i].c := tnoting;
EnemyAdventTable[i].spriteClass := TNothing;
EnemyAdventTable[i].x := 0;
EnemyAdventTable[i].y := 0;
EnemyAdventTable[i].l := 0;
EnemyAdventTable[i].lifes := 0;
end;
FRestEnemys := 0;
end;
 
var
levact: integer;
 
procedure TMainForm.NewLevel(lev: integer);
resourcestring
LNG_LEVEL_INVALID = 'Das Level Nr. %d ist ungültig!'+#13#10+'Das Programm wird beendet.';
var
act: integer;
filex: textfile;
1907,17 → 1914,17
for act := 1 to lev*75-1 do
begin
inc(FRestEnemys);
EnemyAdventTable[act].c := enemys[random(lev+2)+1];
if EnemyAdventTable[act].c = TEnemyAttacker2 then EnemyAdventTable[act].c := enemys[random(lev+2)+1]; {O_o}
EnemyAdventTable[act].spriteClass := enemys[random(lev+2)+1];
if EnemyAdventTable[act].spriteClass = TEnemyAttacker2 then EnemyAdventTable[act].spriteClass := enemys[random(lev+2)+1]; {O_o}
EnemyAdventTable[act].x := act*30 + random(85-(lev+(random(lev))*2)){O_o};
EnemyAdventTable[act].y := random(dxdraw.surfaceheight);
if (EnemyAdventTable[act].c <> TEnemyMeteor) and (EnemyAdventTable[act].c <> TEnemyAttacker2) then EnemyAdventTable[act].l := random(lev)+1;
if EnemyAdventTable[act].c = TEnemyAttacker2 then EnemyAdventTable[act].l := random(6)+1{O_o};
if (EnemyAdventTable[act].spriteClass <> TEnemyMeteor) and (EnemyAdventTable[act].spriteClass <> TEnemyAttacker2) then EnemyAdventTable[act].lifes := random(lev)+1;
if EnemyAdventTable[act].spriteClass = TEnemyAttacker2 then EnemyAdventTable[act].lifes := random(6)+1{O_o};
end;
EnemyAdventTable[lev*75].c := TEnemyBoss;
EnemyAdventTable[lev*75].spriteClass := TEnemyBoss;
EnemyAdventTable[lev*75].x := lev*75*30{O_o} div lev;
EnemyAdventTable[lev*75].y := (dxdraw.surfaceheight div 2) - (MainForm.ImageList.Items.Find('Enemy-boss').height div 2);
EnemyAdventTable[lev*75].l := lev*5;
EnemyAdventTable[lev*75].lifes := lev*5;
inc(FRestEnemys);
end
else
1941,7 → 1948,7
readln(filex, ergebniss);
if ergebniss <> '; SpaceMission '+FCompVersion then
begin
showmessage('Das Level '+inttostr(lev)+' ist ungültig!'+#13#10+'Das Programm wird beendet.');
showmessage(Format(LNG_LEVEL_INVALID, [lev]));
application.terminate;
exit;
end;
1948,7 → 1955,7
readln(filex, ergebniss);
if ergebniss <> '; LEV-File' then
begin
showmessage('Das Level '+inttostr(lev)+' ist ungültig!'+#13#10+'Das Programm wird beendet.');
showmessage(Format(LNG_LEVEL_INVALID, [lev]));
application.terminate;
exit;
end;
1961,7 → 1968,7
begin
inc(pos[levact]);
inc(FRestEnemys);
EnemyAdventTable[pos[levact]].c := enemys[strtoint(ergebniss)];
EnemyAdventTable[pos[levact]].spriteClass := enemys[strtoint(ergebniss)];
end;
if levact = 2 then
begin
1976,7 → 1983,7
if levact = 4 then
begin
inc(pos[levact]);
EnemyAdventTable[pos[levact]].l := strtoint(ergebniss);
EnemyAdventTable[pos[levact]].lifes := strtoint(ergebniss);
end;
end;
closefile(filex);
2027,17 → 2034,18
Textout((dxdraw.surfaceWidth div 2)-150, (dxdraw.surfaceheight div 2), 'Zufallslevel');
Textout((dxdraw.surfaceWidth div 2)-185, (dxdraw.surfaceheight div 2), '>');
end;
if (FBlink div 300) mod 2=0 then
{ if (FBlink div 300) mod 2=0 then
begin
Font.Color := clGreen;
Textout((dxdraw.surfaceWidth div 2)-187, dxdraw.surfaceheight-117, 'Weiter mit Leertaste');
Font.Color := clLime;
Textout((dxdraw.surfaceWidth div 2)-185, dxdraw.surfaceheight-115, 'Weiter mit Leertaste');
end;
end; }
BlinkUpdate;
Release;
end;
if isButton1 in DXInput.States then
// Weiter mit Leertaste oder Enter
if (isButton1 in DXInput.States) or (isButton2 in DXInput.States) then
begin
FLevel := 1;
if ((FMenuItem=1) and (fileexists(FDirectory+'Levels\Level '+inttostr(FLevel)+'.lev')=false)) or ((FMenuItem=2) and (FLevel > 20)) then
2060,6 → 2068,7
if FInterval = giLeicht then SpriteEngine.Move(conleicht);
if FInterval = giMittel then SpriteEngine.Move(conmittel);
if FInterval = giSchwer then SpriteEngine.Move(conschwer);
if FInterval = giMaster then SpriteEngine.Move(conmaster);
SpriteEngine.Dead;
while (Low(EnemyAdventTable)<=FEnemyAdventPos) and
(FEnemyAdventPos<=High(EnemyAdventTable)) and
2066,11 → 2075,11
((EnemyAdventTable[FEnemyAdventPos].x / 4)<=FFrame) and
(FRestEnemys>0) do
begin
if EnemyAdventTable[FEnemyAdventPos].c <> TNoting then
if EnemyAdventTable[FEnemyAdventPos].spriteClass <> TNothing then
begin
with EnemyAdventTable[FEnemyAdventPos] do
begin
Enemy := c.Create(SpriteEngine.Engine);
Enemy := spriteClass.Create(SpriteEngine.Engine);
Enemy.x := dxdraw.surfacewidth;
//Enemy.y := y;
if y <> 0 then Enemy.y := dxdraw.surfaceheight / (480{maximale Bandbreite im alten Format} / y)
2132,8 → 2141,10
Font.Color := clFuchsia;
Textout(450, 440, 'Einheiten: ' + IntToStr(RestlicheEinheiten));
end;}
if BossExists and (FBossLife>0) and (FRestEnemys>0) then
if BossExists and (FBossLife>0) then
begin
if (FRestEnemys>0) then
begin
Font.Color := clGreen;
Textout(dxdraw.surfacewidth-191, dxdraw.surfaceheight-81, 'Boss: ' + IntToStr(FBossLife));
Textout(dxdraw.surfacewidth-191, dxdraw.surfaceheight-41, 'Einheiten: ' + IntToStr(FRestEnemys));
2141,7 → 2152,7
Textout(dxdraw.surfacewidth-190, dxdraw.surfaceheight-80, 'Boss: ' + IntToStr(FBossLife));
Textout(dxdraw.surfacewidth-190, dxdraw.surfaceheight-40, 'Einheiten: ' + IntToStr(FRestEnemys));
end;
if BossExists and (FBossLife>0) and (FRestEnemys<1) then
if (FRestEnemys<1) then
begin
Font.Color := clGreen;
Textout(dxdraw.surfacewidth-191, dxdraw.surfaceheight-41, 'Boss: ' + IntToStr(FBossLife));
2148,7 → 2159,8
Font.Color := clLime;
Textout(dxdraw.surfacewidth-190, dxdraw.surfaceheight-40, 'Boss: ' + IntToStr(FBossLife));
end;
if (FRestEnemys>0) and (Bossexists=false) then
end;
if (FRestEnemys>0) and not Bossexists then
begin
Font.Color := clGreen;
Textout(dxdraw.surfacewidth-191, dxdraw.surfaceheight-41, 'Einheiten: ' + IntToStr(FRestEnemys));
2160,7 → 2172,7
end
else
begin
DXDraw.Surface.Canvas.Font.Color := clGreen;
DXDraw.Surface.Canvas.Font.Color := clGreen; // Grüne schrift bei gescheitert? FIXME
DXDraw.Surface.Canvas.Textout(dxdraw.surfacewidth-251, dxdraw.surfaceheight-41, 'Mission gescheitert!');
DXDraw.Surface.Canvas.Font.Color := clLime;
DXDraw.Surface.Canvas.Textout(dxdraw.surfacewidth-250, dxdraw.surfaceheight-40, 'Mission gescheitert!');
2167,7 → 2179,8
DXDraw.Surface.Canvas.Release;
end;
if FRestEnemys<0 then FRestEnemys := 0; //Muss das sein?
if (Ec=0) and (FRestEnemys=0){ and (SpielerFliegtFort = false)} then
if (Ec=0) and (FRestEnemys=0){ and (SpielerFliegtFort = false)}
and ((BossExists and (FBossLife=0)) or not BossExists) then
begin
DXDraw.Surface.Canvas.Font.Color := clGreen;
DXDraw.Surface.Canvas.Textout(dxdraw.surfacewidth-251, dxdraw.surfaceheight-41, 'Mission erfolgreich!');
2176,7 → 2189,7
DXDraw.Surface.Canvas.Release;
Sleep(1);
inc(FCounter);
if FCounter>150{200} then SpielerFliegtFort := true;
if FCounter>150{200} then PlayerSprite.FlyAway;
end;
end;
end;
2312,23 → 2325,38
procedure TMainForm.OptionMusicClick(Sender: TObject);
begin
OptionMusic.Checked := not OptionMusic.Checked;
if OptionMusic.Checked then PlayMusic(FMusic)
else DestroyMusic(FMusic);
if OptionMusic.Checked then
begin
PlayMusic(FMusic)
end
else
begin
DestroyMusic(FMusic);
end;
WriteOptions;
end;
 
procedure TMainForm.MasterClick(Sender: TObject);
begin
master.checked := true;
FInterval := giMaster;
writeoptions;
end;
 
procedure TMainForm.MitarbeiterClick(Sender: TObject);
resourcestring
LNG_NOTFOUND = 'Die Datei "Texte\Mitwirkende.txt" ist nicht mehr vorhanden. Die Aktion wird abgebrochen!';
const
MitwirkendeTxt = 'Texte\Mitwirkende.txt';
begin
if not fileexists(mainform.fdirectory+'Texte\Mitwirkende.txt') then
if not fileexists(fdirectory+MitwirkendeTxt) then
begin
MessageDLG('Die Datei "Texte\Mitwirkende.txt" ist nicht mehr vorhanden. Die Aktion wird abgebrochen!',
mtWarning, [mbOK], 0);
end
else
begin
TextForm.memo1.lines.loadfromfile(mainform.FDirectory+'Texte\Mitwirkende.txt');
TextForm.showmodal;
MessageDLG(Format(LNG_NOTFOUND, [MitwirkendeTxt]), mtWarning, [mbOK], 0);
Exit;
end;
 
TextForm.memo1.lines.loadfromfile(FDirectory+MitwirkendeTxt);
TextForm.ShowModal;
end;
 
procedure TEnemyMeteor.DoMove(MoveCount: Integer);
2337,9 → 2365,9
if X < -Width then Dead;
end;
 
procedure TEnemyMeteor.HitEnemy(Deaded: Boolean);
procedure TEnemyMeteor.HitEnemy(ADead: Boolean);
begin
if deaded then Collisioned := True;
if ADead then Collisioned := True;
MainForm.PlaySound('Hit', False);
end;
 
2431,7 → 2459,9
 
procedure TMainForm.InformationenClick(Sender: TObject);
begin
dxtimer.enabled := false;
InfoForm.showmodal;
if not mainform.gamepause.checked then mainform.dxtimer.enabled := true;
end;
 
procedure TMainForm.CheatClick(Sender: TObject);
2450,7 → 2480,6
 
procedure TMainForm.FormDestroy(Sender: TObject);
begin
versioninfo.free;
imagelist.free;
spriteengine.free;
dxdraw.Free;
/Signaturen.txt
0,0 → 1,4
CapiCom muss installiert werden
 
http://www.microsoft.com/downloads/de-de/details.aspx?FamilyID=860ee43a-a843-462f-abb5-ff88ea5896f6
http://www.microsoft.com/downloads/en/details.aspx?FamilyId=CA930018-4A66-4DA6-A6C5-206DF13AF316&displaylang=en
/SplSpeicherung.dfm
9,7 → 9,7
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Height = -12
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
16,7 → 16,7
Position = poMainFormCenter
OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
PixelsPerInch = 106
TextHeight = 13
object Bevel1: TBevel
Left = 8
/SplMain.dfm
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/_PostBuild.bat
0,0 → 1,8
@echo off
 
call "%~dp0_Batch\processDir.bat" "%~dp0"
call "%~dp0_Batch\processDir.bat" "%~dp0VCL_DELPHIX_D6"
 
"C:\Programme\Inno Setup 5\iscc.exe" "%~dp0_InnoSetup\SpaceMission.iss"
 
call "%~dp0_Batch\processDir.bat" "%~dp0\_InnoSetup\Output"
/Einstellungen/SpaceMission.ini
1,6 → 1,6
[Settings]
Music=1
Sound=1
Music=0
Sound=0
FullScreen=0
ScreenAutoSize=1
Speed=2
Speed=4
/Compiler.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/SpaceMission.cfg
31,12 → 31,12
-M
-$M16384,1048576
-K$00400000
-LE"D:\Eigene Dateien\Borland Studio-Projekte\Bpl"
-LN"D:\Eigene Dateien\Borland Studio-Projekte\Bpl"
-U"VCL_DELPHIX_D6;VCL_PJVERSIONINFO"
-O"VCL_DELPHIX_D6;VCL_PJVERSIONINFO"
-I"VCL_DELPHIX_D6;VCL_PJVERSIONINFO"
-R"VCL_DELPHIX_D6;VCL_PJVERSIONINFO"
-LE"C:\Users\Daniel Marschall\Documents\Borland Studio-Projekte\Bpl"
-LN"C:\Users\Daniel Marschall\Documents\Borland Studio-Projekte\Bpl"
-U"VCL_DELPHIX_D6"
-O"VCL_DELPHIX_D6"
-I"VCL_DELPHIX_D6"
-R"VCL_DELPHIX_D6"
-w-HIDDEN_VIRTUAL
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
/LevEdit.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/SpaceMission.dpr
13,7 → 13,8
SplSplash in 'SplSplash.pas' {SplashForm},
SplSpeicherung in 'SplSpeicherung.pas' {SpeicherungForm},
SplInfo in 'SplInfo.pas' {InfoForm},
SplCheat in 'SplCheat.pas' {CheatForm};
SplCheat in 'SplCheat.pas' {CheatForm},
Global in 'Global.pas';
 
{$R *.RES}
 
/Global.pas
0,0 → 1,21
unit Global;
 
interface
 
const
FCompVersion = '1.0';
ProgramVersion = '1.1e';
 
function FDirectory: string;
 
implementation
 
uses
SysUtils;
 
function FDirectory: string;
begin
result := extractfilepath(paramstr(0));
end;
 
end.
/SpaceMission.bdsproj
123,7 → 123,7
<Directories Name="UnitOutputDir"></Directories>
<Directories Name="PackageDLLOutputDir"></Directories>
<Directories Name="PackageDCPOutputDir"></Directories>
<Directories Name="SearchPath">VCL_DELPHIX_D6;VCL_PJVERSIONINFO</Directories>
<Directories Name="SearchPath">VCL_DELPHIX_D6</Directories>
<Directories Name="Packages">VCL50;VCLX50;VCLSMP50;VCLDB50;VCLADO50;ibevnt50;VCLBDE50;VCLDBX50;QRPT50;TEEUI50;TEEDB50;TEE50;DSS50;TEEQR50;VCLIB50;VCLMID50;VCLIE50;INETDB50;INET50;NMFAST50;WEBMID50;dclocx50;dclaxserver50;packapi</Directories>
<Directories Name="Conditionals"></Directories>
<Directories Name="DebugSourceDirs"></Directories>
149,7 → 149,7
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">1</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Release">4</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
162,9 → 162,9
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName">ViaThinkSoft</VersionInfoKeys>
<VersionInfoKeys Name="FileDescription">Ein spannendes Weltraumspiel...</VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">1.1.0.0</VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">1.1.4.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName">SpaceMission 1.1</VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright">© Copyright 2001 - 2007 ViaThinkSoft</VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright">© Copyright 2001 - 2011 ViaThinkSoft</VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks">Keine</VersionInfoKeys>
<VersionInfoKeys Name="OriginalFilename">SpaceMission.exe</VersionInfoKeys>
<VersionInfoKeys Name="ProductName">SpaceMission 1.1</VersionInfoKeys>
172,7 → 172,8
<VersionInfoKeys Name="Homepage">www.viathinksoft.de</VersionInfoKeys>
<VersionInfoKeys Name="Projektleiter">Daniel Marschall - www.daniel-marschall.de</VersionInfoKeys>
<VersionInfoKeys Name="Webseite">www.viathinksoft.de</VersionInfoKeys>
</VersionInfoKeys> <Excluded_Packages>
</VersionInfoKeys>
<Excluded_Packages>
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclib100.bpl">Borland InterBase Express Components</Excluded_Packages>
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIntraweb_80_100.bpl">Intraweb 8.0 Design Package for Borland Development Studio 2006</Excluded_Packages>
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyCore100.bpl">Indy 10 Core Design Time</Excluded_Packages>
/LevSpeicherung.pas
52,13 → 52,10
var
SpeicherungForm: TSpeicherungForm;
 
const
FCompVersion = '1.0';
 
implementation
 
uses
LevMain;
Global, LevMain;
 
{$R *.DFM}
 
92,7 → 89,7
end;}
for i := 1 to 9999 do
begin
if fileexists(mainform.fdirectory+'Levels\Level '+inttostr(i)+'.lev') then
if fileexists(fdirectory+'Levels\Level '+inttostr(i)+'.lev') then
LevelListBox.items.Add('Level ' + inttostr(i));
end;
end;
120,7 → 117,7
liw.visible := true;
LadenBtn.enabled := false;
LoeschenBtn.enabled := false;
deletefile(mainform.FDirectory+'Levels\'+
deletefile(FDirectory+'Levels\'+
LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev');
SearchLevels;
end;
158,7 → 155,7
MainForm.DestroyLevel;
MainForm.LevChanged := false;
// Öffnen
AssignFile(SavGame, mainform.FDirectory+'Levels\'+
AssignFile(SavGame, FDirectory+'Levels\'+
LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev');
Reset(SavGame);
// Laden
286,7 → 283,7
exit;
end;
// Öffnen oder erstellen
AssignFile(SavGame, mainform.FDirectory+'Levels\Level '+inttostr(SpinEdit.Position)+'.lev');
AssignFile(SavGame, FDirectory+'Levels\Level '+inttostr(SpinEdit.Position)+'.lev');
Rewrite(SavGame);
// Sortierung
for j := 0 to mainform.enemys.Count - 2 do
343,7 → 340,7
end;
temp := LevelListBox.Items.strings[LevelListBox.itemindex];
SpinEdit.Position := strtoint(RightStr(temp, length(temp)-6));
AssignFile(SavGame, mainform.FDirectory+'Levels\'+
AssignFile(SavGame, FDirectory+'Levels\'+
LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev');
Reset(SavGame);
ReadLN(SavGame, Ergebnis);
/LevMain.pas
5,7 → 5,7
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, MMSystem,
Dialogs, StdCtrls, ExtCtrls, Menus, DIB, DXClass, DXSprite, DXDraws,
DXSounds, Spin, ComCtrls, PjVersionInfo;
DXSounds, Spin, ComCtrls;
 
type
TMainForm = class(TDXForm)
78,13 → 78,10
public
{ VCL-Ersatz }
spriteengine: tdxspriteengine;
versioninfo: tpjversioninfo;
dxtimer: tdxtimer;
imagelist: tdximagelist;
dxdraw: tdxdraw;
{ Variablen }
FDirectory: string;
FEngineVersion: string;
FMenuItem: integer;
Enemys: TStrings;
ArtChecked: integer;
111,13 → 108,10
var
MainForm: TMainForm;
 
const
FCompVersion = '1.0';
 
implementation
 
uses
LevSplash, LevSpeicherung, LevText, LevInfo, LevSource, LevOptions;
Global, LevSplash, LevSpeicherung, LevText, SplInfo, LevSource, LevOptions;
 
const
FileError = 'Die Datei kann von SpaceMission nicht geöffnet werden!';
197,14 → 191,9
var
Ergebnis: string;
daten: textfile;
i: integer;
punkt: integer;
ok: boolean;
begin
{ VCL-Ersatz start }
 
versioninfo := tpjversioninfo.create(self);
 
dxtimer := tdxtimer.create(self);
dxtimer.Interval := 100;
dxtimer.ActiveOnly := false;
247,17 → 236,9
LiveEdit := 1;
// Leeres Level am Anfang braucht keine Beenden-Bestätigung.
// LevChanged := true;
punkt := 0;
FDirectory := extractfilepath(paramstr(0));
versioninfo.filename := paramstr(0);
for i := 1 to length(versioninfo.ProductVersion) do
begin
if copy(versioninfo.ProductVersion, i, 1) = '.' then inc(punkt);
if punkt < 2 then fengineversion :=
fengineversion+copy(versioninfo.ProductVersion, i, 1);
end;
//Application.Title := 'SpaceMission '+FEngineVersion+' - Leveleditor';
Caption := 'SpaceMission '+FEngineVersion+' - Leveleditor';
 
//Application.Title := 'SpaceMission '+ProgramVersion+' - Leveleditor';
Caption := 'SpaceMission '+ProgramVersion+' - Leveleditor';
DXInit;
if (paramcount > 0) and (fileexists(paramstr(1))) then
begin
290,7 → 271,6
begin
Enemys.Free;
//spriteengine.Free;
versioninfo.free;
dxtimer.Free;
imagelist.Free;
dxdraw.free;
464,7 → 444,7
 
procedure TMainForm.MitarbeiterClick(Sender: TObject);
begin
if not fileexists(mainform.fdirectory+'Texte\Mitwirkende.txt') then
if not fileexists(fdirectory+'Texte\Mitwirkende.txt') then
begin
MessageDLG('Die Datei "Texte\Mitwirkende.txt" ist nicht mehr vorhanden. Die Aktion wird abgebrochen!',
mtWarning, [mbOK], 0);
471,7 → 451,7
end
else
begin
TextForm.memo1.lines.loadfromfile(mainform.FDirectory+'Texte\Mitwirkende.txt');
TextForm.memo1.lines.loadfromfile(FDirectory+'Texte\Mitwirkende.txt');
TextForm.showmodal;
end;
end;
/SpaceMission.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/SplCheat.pas
32,7 → 32,7
 
implementation
 
uses SplMain, SplInfo;
uses SplMain, Global;
 
{$R *.DFM}
 
125,7 → 125,7
 
procedure TCheatForm.Label3Click(Sender: TObject);
begin
shellexecute(handle, 'open', pchar('mailto:daniel.marschall@surfeu.de?subject=Cheats für SpaceMission '+MainForm.FEngineVersion), '', '', 1);
shellexecute(handle, 'open', pchar('mailto:daniel-marschall@viathinksoft.de?subject=Cheats für SpaceMission '+ProgramVersion), '', '', 1);
end;
 
end.
/LevSpeicherung.dfm
9,7 → 9,7
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Height = -12
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
16,7 → 16,7
Position = poMainFormCenter
OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
PixelsPerInch = 106
TextHeight = 13
object Bevel1: TBevel
Left = 8
/Texte/Mitwirkende.txt
9,4 → 9,4
 
Entwickelt mit Borland Turbo Delphi.
 
Verwendete Komponenten: DelphiX 2000, PJSoft VersionInfo.
Verwendete Komponenten: DelphiX 2000.
/LevSource.pas
26,13 → 26,10
var
SourceForm: TSourceForm;
 
const
FCompVersion = '1.0';
 
implementation
 
uses
LevMain, LevSpeicherung;
Global, LevMain, LevSpeicherung;
 
{$R *.DFM}
 
84,13 → 81,13
 
procedure TSourceForm.Label1Click(Sender: TObject);
begin
if not fileexists(mainform.fdirectory+'Dokumentation.pdf') then
if not fileexists(Fdirectory+'Dokumentation.pdf') then
begin
MessageDLG('Die Datei "Dokumentation.pdf" ist nicht mehr vorhanden. Die Aktion wird abgebrochen!',
mtWarning, [mbOK], 0);
end
else
shellexecute(handle, 'open', pchar(mainform.fdirectory+'Dokumentation.pdf'), '', '', 1);
shellexecute(handle, 'open', pchar(fdirectory+'Dokumentation.pdf'), '', '', 1);
end;
 
end.
/VCL_DELPHIX_D6/DXGUIDEdit.dcu
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
/VCL_DELPHIX_D6/DelphiX_for6.dcu
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
/VCL_DELPHIX_D6/DXPlayFm.dcu
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
/VCL_DELPHIX_D6/DAnim.dcu
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
/VCL_DELPHIX_D6/DXFFBEdit.dcu
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
/VCL_DELPHIX_D6/DXPlay.dcu
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
/VCL_DELPHIX_D6/DXDraws.dcu
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
/VCL_DELPHIX_D6/DXETable.dcu
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
/VCL_DELPHIX_D6/DIB.dcu
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
/VCL_DELPHIX_D6/DirectX.dcu
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
/VCL_DELPHIX_D6/DXPictEdit.dcu
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
/VCL_DELPHIX_D6/DXConsts.dcu
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
/VCL_DELPHIX_D6/DXRender.dcu
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
/VCL_DELPHIX_D6/DXInput.dcu
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
/VCL_DELPHIX_D6/Wave.dcu
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
/VCL_DELPHIX_D6/DXInptEdit.dcu
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
/VCL_DELPHIX_D6/DXSounds.dcu
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
/VCL_DELPHIX_D6/DShow.dcu
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
/VCL_DELPHIX_D6/DXSprite.dcu
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
/VCL_DELPHIX_D6/DXClass.dcu
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
/VCL_DELPHIX_D6/DXReg.dcu
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
/VCL_DELPHIX_D6/DXTexImg.dcu
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
/VCL_DELPHIX_D6/DXWaveEdit.dcu
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
/LevEdit.cfg
31,8 → 31,8
-M
-$M16384,1048576
-K$00400000
-LE"D:\Eigene Dateien\Borland Studio-Projekte\Bpl"
-LN"D:\Eigene Dateien\Borland Studio-Projekte\Bpl"
-LE"C:\Users\Daniel Marschall\Documents\Borland Studio-Projekte\Bpl"
-LN"C:\Users\Daniel Marschall\Documents\Borland Studio-Projekte\Bpl"
-U"VCL_DELPHIX_D6;VCL_PJVERSIONINFO"
-O"VCL_DELPHIX_D6;VCL_PJVERSIONINFO"
-I"VCL_DELPHIX_D6;VCL_PJVERSIONINFO"
/SplInfo.pas
8,7 → 8,7
 
type
TInfoForm = class(TForm)
ElPopupButton1: TButton;
OkBtn: TButton;
HomeLbl: TLabel;
Image: TImage;
FirmaLbl: TLabel;
19,10 → 19,8
Copyright2Lbl: TLabel;
URL2: TLabel;
URL1: TLabel;
procedure ElPopupButton1Click(Sender: TObject);
procedure OkBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure URL2Click(Sender: TObject);
procedure URL1Click(Sender: TObject);
end;
33,11 → 31,11
implementation
 
uses
SplMain;
Global;
 
{$R *.DFM}
 
procedure TInfoForm.ElPopupButton1Click(Sender: TObject);
procedure TInfoForm.OkBtnClick(Sender: TObject);
begin
close;
end;
44,23 → 42,10
 
procedure TInfoForm.FormCreate(Sender: TObject);
begin
VersionLbl.caption := 'Version ' + mainform.fengineversion;
CopyrightLbl.caption := mainform.versioninfo.LegalCopyright + '.';
FirmaLbl.caption := mainform.versioninfo.CompanyName;
NameLbl.caption := 'SpaceMission';
image.picture.loadfromfile(mainform.FDirectory + 'Bilder\Delphi.bmp');
VersionLbl.caption := 'Version ' + ProgramVersion;
image.picture.loadfromfile(FDirectory + 'Bilder\Delphi.bmp');
end;
 
procedure TInfoForm.FormShow(Sender: TObject);
begin
mainform.dxtimer.enabled := false;
end;
 
procedure TInfoForm.FormHide(Sender: TObject);
begin
if not mainform.gamepause.checked then mainform.dxtimer.enabled := true;
end;
 
procedure TInfoForm.URL2Click(Sender: TObject);
begin
shellexecute(application.Handle, 'open', pchar('http://'+url2.caption+'/'), nil, nil, SW_SHOW);
68,7 → 53,7
 
procedure TInfoForm.URL1Click(Sender: TObject);
begin
shellexecute(application.Handle, 'open', pchar('mailto:'+url1.Caption+'?subject=SpaceMission ' + mainform.fengineversion), nil, nil, SW_SHOW);
shellexecute(application.Handle, 'open', pchar('mailto:'+url1.Caption+'?subject=SpaceMission ' + ProgramVersion), nil, nil, SW_SHOW);
end;
 
end.
/LevMain.dfm
23,7 → 23,7
OnDestroy = FormDestroy
OnMouseMove = DXDrawMouseMove
OnShow = FormShow
PixelsPerInch = 96
PixelsPerInch = 106
TextHeight = 13
object Bevel1: TBevel
Left = 648
/SplCheat.dfm
9,7 → 9,7
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Height = -12
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
16,7 → 16,7
Position = poMainFormCenter
OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
PixelsPerInch = 106
TextHeight = 13
object Label1: TLabel
Left = 8
30,6 → 30,7
Top = 8
Width = 106
Height = 13
Cursor = crHandPoint
Caption = 'Herausgeber anfragen'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlue
81,6 → 82,7
Top = 104
Width = 83
Height = 13
Cursor = crHandPoint
Caption = 'Cheat deaktiviren'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlue
/_PreBuild.bat
0,0 → 1,0
@echo off
/LevSource.dfm
9,7 → 9,7
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Height = -12
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
16,7 → 16,7
Position = poMainFormCenter
OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
PixelsPerInch = 106
TextHeight = 13
object ElLabel1: TLabel
Left = 8
/SplSpeicherung.pas
47,13 → 47,10
var
SpeicherungForm: TSpeicherungForm;
 
const
FCompVersion = '1.0';
 
implementation
 
uses
SplMain;
Global, SplMain;
 
{$R *.DFM}
 
79,7 → 76,7
li4b.caption := 'n/a';
LadenBtn.enabled := false;
LoeschenBtn.enabled := false;
res := FindFirst(mainform.fdirectory+'Spielstände\*.sav', 0, sr);
res := FindFirst(fdirectory+'Spielstände\*.sav', 0, sr);
try
while (res = 0) do
begin
121,7 → 118,7
li4b.caption := 'n/a';
LadenBtn.enabled := false;
LoeschenBtn.enabled := false;
deletefile(mainform.FDirectory+'Spielstände\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.sav');
deletefile(FDirectory+'Spielstände\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.sav');
searchsaves;
end;
end;
158,7 → 155,7
end;
{if liu.visible or (LevelListBox.items.count=0) then
exit;}
AssignFile(SavGame, mainform.FDirectory+'Spielstände\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.sav');
AssignFile(SavGame, FDirectory+'Spielstände\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.sav');
Reset(SavGame);
ReadLN(SavGame);
ReadLN(SavGame);
206,7 → 203,7
if MessageDlg('Spielstand ist bereits vorhanden. Ersetzen?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then
exit;
end;
AssignFile(SavGame, mainform.FDirectory+'Spielstände\'+LevelName.text+'.sav');
AssignFile(SavGame, FDirectory+'Spielstände\'+LevelName.text+'.sav');
Rewrite(SavGame);
WriteLN(SavGame, '; SpaceMission '+FCompVersion);
WriteLN(SavGame, '; SAV-File');
247,7 → 244,7
exit;
end;
LevelName.Text := LevelListBox.Items.strings[LevelListBox.itemindex];
AssignFile(SavGame, mainform.FDirectory+'Spielstände\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.sav');
AssignFile(SavGame, FDirectory+'Spielstände\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.sav');
Reset(SavGame);
ReadLN(SavGame, Ergebniss);
if Ergebniss <> '; SpaceMission '+FCompVersion then
/SpaceMission.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property