Mercurial > repos > IBDev-IBBoard.WarFoundry.API
annotate api/Factories/AbstractNonNativeFileExtensionWarFoundryFactory.cs @ 194:1412a42190a1
* Fix mutex group clash checking
no-open-ticket
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 30 Oct 2009 20:23:03 +0000 |
parents | 2f3cafb69799 |
children | f00a57369aaa |
rev | line source |
---|---|
104
2f3cafb69799
Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents:
20
diff
changeset
|
1 // This file (AbstractNonNativeFileExtensionWarFoundryFactory.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2007, 2008, 2009 IBBoard. |
0 | 2 // |
104
2f3cafb69799
Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents:
20
diff
changeset
|
3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. |
0 | 4 |
5 using System; | |
6 using System.Collections.Generic; | |
7 using System.IO; | |
20
b7c93a5821cd
* Remove unnecessary project dependency
IBBoard <dev@ibboard.co.uk>
parents:
18
diff
changeset
|
8 using IBBoard.Logging; |
0 | 9 using IBBoard.WarFoundry.API.Objects; |
10 | |
11 namespace IBBoard.WarFoundry.API.Factories | |
12 { | |
13 public abstract class AbstractNonNativeFileExtensionWarFoundryFactory : AbstractNonNativeWarFoundryFactory<FileInfo> | |
14 { | |
15 protected abstract string ArmyFileExtension { get; } | |
16 protected abstract string RaceFileExtension { get; } | |
17 protected abstract string GameSystemFileExtension { get; } | |
18 | |
19 protected override bool CheckCanHandleFileFormat (FileInfo file) | |
20 { | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
21 return CheckCanHandleFileAsArmy(file) || CheckCanHandleFileAsRace(file) || CheckCanHandleFileAsGameSystem(file); |
0 | 22 } |
23 | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
24 protected override bool CheckCanHandleFileAsArmy(FileInfo file) |
0 | 25 { |
26 return ArmyFileExtension!=null && file.Name.ToLower().EndsWith(ArmyFileExtension); | |
27 } | |
28 | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
29 protected override bool CheckCanHandleFileAsRace(FileInfo file) |
0 | 30 { |
31 return RaceFileExtension!=null && file.Name.ToLower().EndsWith(RaceFileExtension); | |
32 } | |
33 | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
34 protected override bool CheckCanHandleFileAsGameSystem(FileInfo file) |
0 | 35 { |
36 return GameSystemFileExtension!=null && file.Name.ToLower().EndsWith(GameSystemFileExtension); | |
37 } | |
38 | |
39 protected override FileInfo GetFileAsSupportedType (FileInfo file) | |
40 { | |
41 return file; | |
14
0770e5cbba7c
Closes #21 - File loading in order
IBBoard <dev@ibboard.co.uk>
parents:
0
diff
changeset
|
42 } |
0 | 43 |
44 protected abstract Army CreateArmyFromFile(FileInfo file); | |
45 protected abstract Race CreateRaceFromFile(FileInfo file); | |
46 protected abstract GameSystem CreateGameSystemFromFile(FileInfo file); | |
18
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
47 |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
48 protected override ICollection<IWarFoundryObject> DoCreateObjectsFromFile (FileInfo file) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
49 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
50 ICollection<IWarFoundryObject> objects = new List<IWarFoundryObject>(); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
51 |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
52 if (CheckCanHandleFileAsRace(file)) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
53 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
54 objects.Add(CreateRaceFromFile(file)); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
55 } |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
56 else if (CheckCanHandleFileAsGameSystem(file)) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
57 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
58 objects.Add(CreateGameSystemFromFile(file)); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
59 } |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
60 else if (CheckCanHandleFileAsArmy(file)) |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
61 { |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
62 objects.Add(CreateArmyFromFile(file)); |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
63 } |
20
b7c93a5821cd
* Remove unnecessary project dependency
IBBoard <dev@ibboard.co.uk>
parents:
18
diff
changeset
|
64 else |
b7c93a5821cd
* Remove unnecessary project dependency
IBBoard <dev@ibboard.co.uk>
parents:
18
diff
changeset
|
65 { |
b7c93a5821cd
* Remove unnecessary project dependency
IBBoard <dev@ibboard.co.uk>
parents:
18
diff
changeset
|
66 LogNotifier.Warn(GetType(), "Failed trying to create from "+file.FullName+" - not a Race, Army or GameSystem"); |
b7c93a5821cd
* Remove unnecessary project dependency
IBBoard <dev@ibboard.co.uk>
parents:
18
diff
changeset
|
67 } |
18
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
68 |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
69 return objects; |
3c228f093a71
Re #16 - Complete Rollcall file loading
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
70 } |
0 | 71 } |
72 } |