unit Game.Intf; interface uses System.Generics.Collections; type IGameNetwork = interface ['{0B1445D2-E6B7-45FD-98CB-A76F01B9D4B8}'] function GetServerPort: Integer; function GetPeerPort: Integer; function GetQueryPort: Integer; procedure SetServerPort(const Value: Integer); procedure SetPeerPort(const Value: Integer); procedure SetQueryPort(const Value: Integer); property ServerPort: Integer read GetServerPort write SetServerPort; property PeerPort: Integer read GetPeerPort write SetPeerPort; property QueryPort: Integer read GetQueryPort write SetQueryPort; end; IGameName = interface ['{44A04A0D-BE01-42B7-8EF1-7EC5CC431B66}'] function GetServerName: string; function GetMessageOfTheDay: string; procedure SetServerName(const Value: string); procedure SetMessageOfTheDay(const Value: string); property ServerName: string read GetServerName write SetServerName; property MessageOfTheDay: string read GetMessageOfTheDay write SetMessageOfTheDay; end; IGamePassword = interface ['{30BD2D9D-4249-4D49-8376-E8A2E4809CBA}'] function GetGamePassword: string; function GetAdminPassword: string; procedure SetGamePassword(const Value: string); procedure SetAdminPassword(const Value: string); property GamePassword: string read GetGamePassword write SetGamePassword; property AdminPassword: string read GetAdminPassword write SetAdminPassword; end; TGameMap = class(TObject) private FCategory: string; FName: string; FDisplayName: string; FPreviewName: string; function GetPreviewName: string; protected function GetDisplayName: string; virtual; property ActualDisplayName: string read FDisplayName; property ActualPreviewName: string read FPreviewName; public constructor Create(const AName: string; const ADisplayName, ACategory: string; const APreviewName: string = ''); overload; constructor Create(AClone: TGameMap); overload; property Category: string read FCategory; property Name: string read FName; property DisplayName: string read GetDisplayName; property PreviewName: string read GetPreviewName; end; IGameMapList = interface ['{E8552B4C-9447-4FAD-BB20-C5EB3AF07B0E}'] function GetPredefinedMapList: TEnumerable; function GetMapList: TEnumerable; function GetMapCount: Integer; function GetMap(Index: Integer): TGameMap; procedure AddMap(AMap: TGameMap); procedure InsertMap(Index: Integer; AMap: TGameMap); procedure DeleteMap(AIndex: Integer); procedure RemoveMap(AMap: TGameMap); procedure MoveMap(ASourceIndex, ATargetIndex: Integer); property PredefinedMapList: TEnumerable read GetPredefinedMapList; property MapList: TEnumerable read GetMapList; property MapCount: Integer read GetMapCount; property Map[Index: Integer]: TGameMap read GetMap; end; implementation { TGameMap } constructor TGameMap.Create(const AName, ADisplayName, ACategory, APreviewName: string); begin inherited Create; FName := AName; FDisplayName := ADisplayName; FCategory := ACategory; FPreviewName := APreviewName end; constructor TGameMap.Create(AClone: TGameMap); begin Create(AClone.Name, AClone.ActualDisplayName, AClone.Category, AClone.ActualPreviewName); end; function TGameMap.GetDisplayName: string; begin if Length(FDisplayName) > 0 then Result := FDisplayName else Result := FName; end; function TGameMap.GetPreviewName: string; begin if Length(FPreviewName) > 0 then Result := FPreviewName else Result := FName; end; end.