Statistics
| Branch: | Tag: | Revision:

root / Client / UGameResources.pas @ 0:95bd93c28625

History | View | Annotate | Download (3.8 kB)

1
(*
2
 * CDDL HEADER START
3
 *
4
 * The contents of this file are subject to the terms of the
5
 * Common Development and Distribution License, Version 1.0 only
6
 * (the "License").  You may not use this file except in compliance
7
 * with the License.
8
 *
9
 * You can obtain a copy of the license at
10
 * http://www.opensource.org/licenses/cddl1.php.
11
 * See the License for the specific language governing permissions
12
 * and limitations under the License.
13
 *
14
 * When distributing Covered Code, include this CDDL HEADER in each
15
 * file and include the License file at
16
 * http://www.opensource.org/licenses/cddl1.php.  If applicable,
17
 * add the following below this CDDL HEADER, with the fields enclosed
18
 * by brackets "[]" replaced with your own identifying * information:
19
 *      Portions Copyright [yyyy] [name of copyright owner]
20
 *
21
 * CDDL HEADER END
22
 *
23
 *
24
 *      Portions Copyright 2007 Andreas Schneider
25
 *)
26
unit UGameResources;
27
28
{$mode objfpc}{$H+}
29
30
interface
31
32
uses
33
  Classes, SysUtils, UArtProvider, UTileDataProvider, UTexmapProvider,
34
  ULandscape, {URadarProvider,} UHueProvider;
35
  
36
type
37
38
  { TGameResourceManager }
39
40
  TGameResourceManager = class(TObject)
41
    constructor Create(ADataDir: string);
42
    destructor Destroy; override;
43
  protected
44
    FDataDir: string;
45
    FArtProvider: TArtProvider;
46
    FTiledataProvider: TTiledataProvider;
47
    FTexmapProvider: TTexmapProvider;
48
    //FRadarProvider: TRadarProvider;
49
    FHueProvider: THueProvider;
50
    
51
    FLandscape: TLandscape;
52
  public
53
    procedure InitLandscape(AWidth, AHeight: Word);
54
    function GetFile(AFileName: string): string;
55
    
56
    property Art: TArtProvider read FArtProvider;
57
    property Tiledata: TTiledataProvider read FTiledataProvider;
58
    property Texmaps: TTexmapProvider read FTexmapProvider;
59
    //property Radar: TRadarProvider read FRadarProvider;
60
    property Hue: THueProvider read FHueProvider;
61
    property Landscape: TLandscape read FLandscape;
62
  end;
63
  
64
var
65
  GameResourceManager: TGameResourceManager;
66
  ResMan: TGameResourceManager absolute GameResourceManager;
67
  
68
procedure InitGameResourceManager(ADataDir: string);
69
70
implementation
71
72
procedure InitGameResourceManager(ADataDir: string);
73
begin
74
  if GameResourceManager <> nil then FreeAndNil(GameResourceManager);
75
  GameResourceManager := TGameResourceManager.Create(ADataDir);
76
end;
77
78
{ TGameResourceManager }
79
80
constructor TGameResourceManager.Create(ADataDir: string);
81
begin
82
  inherited Create;
83
  FDataDir := IncludeTrailingPathDelimiter(ADataDir);
84
  
85
  FArtProvider := TArtProvider.Create(GetFile('art.mul'), GetFile('artidx.mul'), True);
86
  FTiledataProvider := TTiledataProvider.Create(GetFile('tiledata.mul'), True);
87
  FTexmapProvider := TTexmapProvider.Create(GetFile('texmaps.mul'), GetFile('texidx.mul'), True);
88
  //FRadarProvider := TRadarProvider.Create(GetFile('radarcol.mul'));
89
  FHueProvider := THueProvider.Create(GetFile('hues.mul'), True);
90
end;
91
92
destructor TGameResourceManager.Destroy;
93
begin
94
  if FArtProvider <> nil then FreeAndNil(FArtProvider);
95
  if FTiledataProvider <> nil then FreeAndNil(FTiledataProvider);
96
  if FTexmapProvider <> nil then FreeAndNil(FTexmapProvider);
97
  //if FRadarProvider <> nil then FreeAndNil(FRadarProvider);
98
  if FHueProvider <> nil then FreeAndNil(FHueProvider);
99
  if FLandscape <> nil then FreeAndNil(FLandscape);
100
  inherited Destroy;
101
end;
102
103
function TGameResourceManager.GetFile(AFileName: string): string;
104
begin
105
  Result := FDataDir + AFileName;
106
end;
107
108
procedure TGameResourceManager.InitLandscape(AWidth, AHeight: Word);
109
begin
110
  if FLandscape <> nil then FreeAndNil(FLandscape);
111
  FLandscape := TLandscape.Create(AWidth, AHeight);
112
end;
113
114
finalization
115
begin
116
  if GameResourceManager <> nil then FreeAndNil(GameResourceManager);
117
end;
118
119
end.
120