Oolite
Loading...
Searching...
No Matches
OOCheckEquipmentPListVerifierStage Class Reference

#include <OOCheckEquipmentPListVerifierStage.h>

+ Inheritance diagram for OOCheckEquipmentPListVerifierStage:
+ Collaboration diagram for OOCheckEquipmentPListVerifierStage:

Instance Methods

(NSString *) - name [implementation]
 
(BOOL) - shouldRun [implementation]
 
(void) - run [implementation]
 
(void) - runCheckWithEquipment: [implementation]
 
- Instance Methods inherited from OOFileHandlingVerifierStage
(NSSet *) - dependencies [implementation]
 
(NSSet *) - dependents [implementation]
 
- Instance Methods inherited from OOOXPVerifierStage
(OOOXPVerifier *) - verifier
 
(BOOL) - completed
 
(id) - init [implementation]
 
(void) - dealloc [implementation]
 
(id) - description [implementation]
 
(void) - setVerifier: [implementation]
 
(BOOL) - isDependentOf: [implementation]
 
(void) - registerDependency: [implementation]
 
(void) - dependencyRegistrationComplete [implementation]
 
(BOOL) - canRun [implementation]
 
(void) - performRun [implementation]
 
(void) - noteSkipped [implementation]
 
(NSSet *) - resolvedDependencies [implementation]
 
(NSSet *) - resolvedDependents [implementation]
 
(void) - registerDepedent: [implementation]
 
(void) - dependencyCompleted: [implementation]
 

Detailed Description

Definition at line 32 of file OOCheckEquipmentPListVerifierStage.h.

Method Documentation

◆ name

- (NSString *) name
implementation

Reimplemented from OOOXPVerifierStage.

Definition at line 34 of file OOCheckEquipmentPListVerifierStage.m.

47{
48 return kStageName;
49}
static NSString *const kStageName

◆ run

- (void) run
implementation

Reimplemented from OOOXPVerifierStage.

Definition at line 34 of file OOCheckEquipmentPListVerifierStage.m.

65{
66 OOFileScannerVerifierStage *fileScanner = nil;
67 NSArray *equipmentPList = nil;
68
69 fileScanner = [[self verifier] fileScannerStage];
70
71 equipmentPList = [fileScanner plistNamed:@"equipment.plist"
72 inFolder:@"Config"
74 checkBuiltIn:NO];
75
76 if (equipmentPList == nil) return;
77
78 // Check that it's an array
79 if (![equipmentPList isKindOfClass:[NSArray class]])
80 {
81 OOLog(@"verifyOXP.equipmentPList.notArray", @"%@", @"***** ERROR: equipment.plist is not an array.");
82 return;
83 }
84
85
86 [self runCheckWithEquipment:equipmentPList];
87}
#define OOLog(class, format,...)
Definition OOLogging.h:88
return nil
id plistNamed:inFolder:referencedFrom:checkBuiltIn:(NSString *file,[inFolder] NSString *folder,[referencedFrom] NSString *context,[checkBuiltIn] BOOL checkBuiltIn)

◆ runCheckWithEquipment:

- (void) runCheckWithEquipment: (NSArray *)  equipmentPList
implementation

Provided by category OOCheckEquipmentPListVerifierStage(OOPrivate).

Definition at line 34 of file OOCheckEquipmentPListVerifierStage.m.

94 :(NSArray *)equipmentPList
95{
96 NSArray *entry = nil;
97 unsigned entryIndex = 0;
98 NSUInteger elemCount;
99 NSString *name = nil;
100 NSString *entryDesc = nil;
101
102 foreach (entry, equipmentPList)
103 {
104 ++entryIndex;
105
106 // Entries should be arrays.
107 if (![entry isKindOfClass:[NSArray class]])
108 {
109 OOLog(@"verifyOXP.equipmentPList.entryNotArray", @"***** ERROR: equipment.plist entry %u of equipment.plist is not an array.", entryIndex);
110 continue;
111 }
112
113 elemCount = [entry count];
114
115 // Make a name for entry for display purposes.
116 if (EQUIPMENT_KEY_INDEX < elemCount) name = [entry oo_stringAtIndex:EQUIPMENT_KEY_INDEX];
117 else name = nil;
118
119 if (name != nil) entryDesc = [NSString stringWithFormat:@"%u (\"%@\")", entryIndex, name];
120 else entryDesc = [NSString stringWithFormat:@"%u", entryIndex];
121
122 // Check that the entry has an acceptable number of elements.
123 if (elemCount < 5)
124 {
125 OOLog(@"verifyOXP.equipmentPList.badEntrySize", @"***** ERROR: equipment.plist entry %@ has too few elements (%llu, should be 5 or 6).", entryDesc, elemCount);
126 continue;
127 }
128 if (6 < elemCount)
129 {
130 OOLog(@"verifyOXP.equipmentPList.badEntrySize", @"----- WARNING: equipment.plist entry %@ has too many elements (%llu, should be 5 or 6).", entryDesc, elemCount);
131 }
132
133 /* Check element types. The numbers are required to be unsigned
134 integers; the use of a negative default will catch both negative
135 values and unconvertable values.
136 */
137 if ([entry oo_longAtIndex:EQUIPMENT_TECH_LEVEL_INDEX defaultValue:-1] < 0)
138 {
139 OOLog(@"verifyOXP.equipmentPList.badElementType", @"***** ERROR: tech level for entry %@ of equipment.plist is not a positive integer.", entryDesc);
140 }
141 if ([entry oo_longAtIndex:EQUIPMENT_PRICE_INDEX defaultValue:-1] < 0)
142 {
143 OOLog(@"verifyOXP.equipmentPList.badElementType", @"***** ERROR: price for entry %@ of equipment.plist is not a positive integer.", entryDesc);
144 }
145 if ([entry oo_stringAtIndex:EQUIPMENT_SHORT_DESC_INDEX] == nil)
146 {
147 OOLog(@"verifyOXP.equipmentPList.badElementType", @"***** ERROR: short description for entry %@ of equipment.plist is not a string.", entryDesc);
148 }
149 if ([entry oo_stringAtIndex:EQUIPMENT_KEY_INDEX] == nil)
150 {
151 OOLog(@"verifyOXP.equipmentPList.badElementType", @"***** ERROR: key for entry %@ of equipment.plist is not a string.", entryDesc);
152 }
153 if ([entry oo_stringAtIndex:EQUIPMENT_LONG_DESC_INDEX] == nil)
154 {
155 OOLog(@"verifyOXP.equipmentPList.badElementType", @"***** ERROR: long description for entry %@ of equipment.plist is not a string.", entryDesc);
156 }
157
158 if (5 < elemCount)
159 {
160 if ([entry oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] == nil)
161 {
162 OOLog(@"verifyOXP.equipmentPList.badElementType", @"***** ERROR: equipment.plist entry %@'s extra information dictionary is not a dictionary.", entryDesc);
163 }
164 // TODO: verify contents of extra info dictionary.
165 }
166 }
167}
@ EQUIPMENT_SHORT_DESC_INDEX
Definition Universe.h:81
@ EQUIPMENT_LONG_DESC_INDEX
Definition Universe.h:83
@ EQUIPMENT_TECH_LEVEL_INDEX
Definition Universe.h:79
@ EQUIPMENT_KEY_INDEX
Definition Universe.h:82
@ EQUIPMENT_PRICE_INDEX
Definition Universe.h:80
@ EQUIPMENT_EXTRA_INFO_INDEX
Definition Universe.h:84

◆ shouldRun

- (BOOL) shouldRun
implementation

Reimplemented from OOOXPVerifierStage.

Definition at line 34 of file OOCheckEquipmentPListVerifierStage.m.

53{
54 OOFileScannerVerifierStage *fileScanner = nil;
55
56 fileScanner = [[self verifier] fileScannerStage];
57 return [fileScanner fileExists:@"equipment.plist"
58 inFolder:@"Config"
60 checkBuiltIn:NO];
61}
BOOL fileExists:inFolder:referencedFrom:checkBuiltIn:(NSString *file,[inFolder] NSString *folder,[referencedFrom] NSString *context,[checkBuiltIn] BOOL checkBuiltIn)

The documentation for this class was generated from the following files: