Mercurial > repos > IBDev-IBBoard.WarFoundry.API
annotate api/Factories/AbstractNonNativeFileExtensionWarFoundryFactory.cs @ 18:3c228f093a71
Re #16 - Complete Rollcall file loading
* Add default implementation to "do create" method in non-native factory
Also commit csproj changes and removal of old mdp file
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 21 Feb 2009 14:23:53 +0000 |
parents | 306558904c2a |
children | b7c93a5821cd |
rev | line source |
---|---|
15 | 1 // This file (AbstractNonNativeFileExtensionWarFoundryFactory.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard. |
0 | 2 // |
15 | 3 // The file and the library/program it is in are licensed under the GNU LGPL license, either version 3 of the License or (at your option) any later version. Please see COPYING.LGPL for more information and the full license. |
0 | 4 |
5 using System; | |
6 using System.Collections.Generic; | |
7 using System.IO; | |
8 using IBBoard.WarFoundry.API.Objects; | |
9 | |
10 namespace IBBoard.WarFoundry.API.Factories | |
11 { | |
12 public abstract class AbstractNonNativeFileExtensionWarFoundryFactory : AbstractNonNativeWarFoundryFactory<FileInfo> | |
13 { | |
14 protected abstract string ArmyFileExtension { get; } | |
15 protected abstract string RaceFileExtension { get; } | |
16 protected abstract string GameSystemFileExtension { get; } | |
17 | |
18 protected override bool CheckCanHandleFileFormat (FileInfo file) | |
19 { | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
20 return CheckCanHandleFileAsArmy(file) || CheckCanHandleFileAsRace(file) || CheckCanHandleFileAsGameSystem(file); |
0 | 21 } |
22 | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
23 protected override bool CheckCanHandleFileAsArmy(FileInfo file) |
0 | 24 { |
25 return ArmyFileExtension!=null && file.Name.ToLower().EndsWith(ArmyFileExtension); | |
26 } | |
27 | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
28 protected override bool CheckCanHandleFileAsRace(FileInfo file) |
0 | 29 { |
30 return RaceFileExtension!=null && file.Name.ToLower().EndsWith(RaceFileExtension); | |
31 } | |
32 | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
33 protected override bool CheckCanHandleFileAsGameSystem(FileInfo file) |
0 | 34 { |
35 return GameSystemFileExtension!=null && file.Name.ToLower().EndsWith(GameSystemFileExtension); | |
36 } | |
37 | |
38 protected override FileInfo GetFileAsSupportedType (FileInfo file) | |
39 { | |
40 return file; | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
41 } |
0 | 42 |
43 protected abstract Army CreateArmyFromFile(FileInfo file); | |
44 protected abstract Race CreateRaceFromFile(FileInfo file); | |
45 protected abstract GameSystem CreateGameSystemFromFile(FileInfo file); | |
18
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
46 |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
47 protected override ICollection<IWarFoundryObject> DoCreateObjectsFromFile (FileInfo file) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
48 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
49 ICollection<IWarFoundryObject> objects = new List<IWarFoundryObject>(); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
50 |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
51 if (CheckCanHandleFileAsRace(file)) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
52 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
53 objects.Add(CreateRaceFromFile(file)); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
54 } |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
55 else if (CheckCanHandleFileAsGameSystem(file)) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
56 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
57 objects.Add(CreateGameSystemFromFile(file)); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
58 } |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
59 else if (CheckCanHandleFileAsArmy(file)) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
60 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
61 objects.Add(CreateArmyFromFile(file)); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
62 } |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
63 |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
64 return objects; |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
65 } |
0 | 66 } |
67 } |