Uff das wird hart.
Ich habe nun vor, die ganze Steuerung des Spiels in Objekte zu gliedern.
D.h. dass ich fast den kompletten Code aus einzelnen Abschnitten in wenige
Objekte und Prozeduren zusammenfassen muss.
Hier mal ein Beispiel, wass alles "ausgelagert werden soll:
Delphi-Quellcode:
TGameEngine = class;
TGameMode = class
Owner: TGameEngine;
public
constructor Create(AOwner : TGameEngine);
procedure PreMove ; virtual;
procedure AfterMove ; virtual;
procedure AfterDraw ; virtual;
procedure PlayerMove(APlayer: TPlayer ); virtual;
procedure Bot (APlayer: TPlayer ); virtual;
procedure LoadLevel (Options: TGameOptions ); virtual;
end;
TCTFGame = class (TGameMode)
public
procedure PreMove ; override;
procedure AfterMove ; override;
procedure AfterDraw ; override;
procedure PlayerMove(APlayer: TPlayer ); override;
procedure Bot (APlayer: TPlayer ); override;
// procedure LoadLevel (Options: TGameOptions ); override;
end;
TGameSettings = record
GameStart : TTime;
GameTime : Single;
GameEnd : Single;
RoundTime : Single;
frindlyfire : Boolean;
DoSpectate : Boolean;
RespawnTime : Integer;
TeamCount : Integer;
GameMode : TGameMode;
showWaypoints : Boolean;
//================================
CTFFlags : Array[0..3] of TCTFFlag;
CTFFlagBases : Array[0..3] of TCTFFlagBase;
PLStartsCount : Integer;
PLStarts : Array [0..50] of TPlayerStartSpot;
end;
TGameEngine = class
SEngine : TSpriteEngine;
Input : TDXInput;
Sounds : TDXWaveList;
Images : TDXImageList;
//================================
Players : TList;
ControllingPlayer : TPlayer;
Ground : TImageSprite;
BackGround : TBackGroundSprite;
//================================
MPos : TPoint;
Enabled : Boolean;
Settings : TGameSettings;
constructor Create (SEngine: TSpriteEngine; DXInput: TDXInput; DXSounds: TDXWaveList; DXImages: TDXImageList);
procedure GameTic;
procedure DestroyGame;
procedure ControllPlayer(Player: TPlayer);
function GetPlayerStart(Team: Integer): TPoint;
procedure DealDamage(XX,YY: Single; Damage: TDamage; PlayerID: Integer);
function MissleHit(HitX,HitY: Single; Damage: TDamage): Boolean;
end;
Wie man sieht wird dadurch sogar die Steuerung der Bots durch das Objekt TGameMode geregelt, was später die erstellung eines neuen Spielmodus sehr erleichtern soll und natürlich den gesamten Ccode übersichtlicher machen soll.
Was haltet ihr denn davon?
MFG