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

#include <OOPListScript.h>

+ Inheritance diagram for OOPListScript:
+ Collaboration diagram for OOPListScript:

Instance Methods

(void) - dealloc [implementation]
 
(NSString *) - name [implementation]
 
(NSString *) - scriptDescription [implementation]
 
(NSString *) - version [implementation]
 
(BOOL) - requiresTickle [implementation]
 
(void) - runWithTarget: [implementation]
 
(id) - initWithName:scriptArray:metadata: [implementation]
 
- Instance Methods inherited from OOScript
(NSString *) - displayName
 
(NSString *) - descriptionComponents [implementation]
 
(BOOL) - callMethod:inContext:withArguments:count:result:
 

Class Methods

(NSArray *) + scriptsInPListFile:
 
(NSArray *) + scriptsFromDictionaryOfScripts:filePath: [implementation]
 
(NSArray *) + loadCachedScripts: [implementation]
 
- Class Methods inherited from OOScript
(NSArray *) + worldScriptsAtPath:
 
(NSArray *) + scriptsFromFileNamed:
 
(NSArray *) + scriptsFromList:
 
(NSArray *) + scriptsFromFileAtPath:
 
(id) + jsScriptFromFileNamed:properties:
 
(id) + jsAIScriptFromFileNamed:properties:
 

Private Attributes

NSArray * _script
 
NSDictionary * _metadata
 

Detailed Description

Definition at line 36 of file OOPListScript.h.

Method Documentation

◆ dealloc

- (void) dealloc
implementation

Definition at line 39 of file OOPListScript.m.

70{
71 [_script release];
72 [_metadata release];
73
74 [super dealloc];
75}

◆ initWithName:scriptArray:metadata:

- (id) initWithName: (NSString *)  name
scriptArray: (NSArray *)  script
metadata: (NSDictionary *)  metadata 
implementation

Provided by category OOPListScript(SetUp).

Definition at line 39 of file OOPListScript.m.

192 :(NSString *)name scriptArray:(NSArray *)script metadata:(NSDictionary *)metadata
193{
194 self = [super init];
195 if (self != nil)
196 {
197 _script = [script retain];
198 if (name != nil)
199 {
200 if (metadata == nil) metadata = [NSDictionary dictionaryWithObject:name forKey:kMDKeyName];
201 else
202 {
203 NSMutableDictionary *mutableMetadata = [[metadata mutableCopy] autorelease];
204 [mutableMetadata setObject:name forKey:kMDKeyName];
205 metadata = mutableMetadata;
206 }
207 }
208 _metadata = [metadata copy];
209 }
210
211 return self;
212}
return nil

◆ loadCachedScripts:

+ (NSArray *) loadCachedScripts: (NSDictionary *)  cachedScripts
implementation

Provided by category OOPListScript(SetUp).

Definition at line 39 of file OOPListScript.m.

169 :(NSDictionary *)cachedScripts
170{
171 NSString *key = nil;
172
173 NSMutableArray *result = [NSMutableArray arrayWithCapacity:[cachedScripts count]];
174
175 foreachkey (key, cachedScripts)
176 {
177 NSDictionary *cacheValue = [cachedScripts oo_dictionaryForKey:key];
178 NSArray *scriptArray = [cacheValue oo_arrayForKey:kKeyScript];
179 NSDictionary *metadata = [cacheValue oo_dictionaryForKey:kKeyMetadata];
180 OOPListScript *script = [[self alloc] initWithName:key scriptArray:scriptArray metadata:metadata];
181 if (script != nil)
182 {
183 [result addObject:script];
184 [script release];
185 }
186 }
187
188 return [[result copy] autorelease];
189}
#define foreachkey(VAR, DICT)
Definition OOCocoa.h:353

◆ name

- (NSString *) name
implementation

Reimplemented from OOScript.

Definition at line 39 of file OOPListScript.m.

79{
80 return [_metadata objectForKey:kMDKeyName];
81}

◆ requiresTickle

- (BOOL) requiresTickle
implementation

Reimplemented from OOScript.

Definition at line 39 of file OOPListScript.m.

97{
98 return YES;
99}

◆ runWithTarget:

- (void) runWithTarget: (Entity *)  target
implementation

Reimplemented from OOScript.

Definition at line 39 of file OOPListScript.m.

102 :(Entity *)target
103{
104 if (target != nil && ![target isKindOfClass:[ShipEntity class]])
105 {
106 OOLog(@"script.legacy.run.badTarget", @"Expected ShipEntity or nil for target, got %@.", [target class]);
107 return;
108 }
109
110 OOLog(@"script.legacy.run", @"Running script %@", [self displayName]);
111 OOLogIndentIf(@"script.legacy.run");
112
113 [PLAYER runScriptActions:_script
114 withContextName:[self name]
115 forTarget:(ShipEntity *)target];
116
117 OOLogOutdentIf(@"script.legacy.run");
118}
#define OOLogOutdentIf(class)
Definition OOLogging.h:102
#define OOLog(class, format,...)
Definition OOLogging.h:88
#define OOLogIndentIf(class)
Definition OOLogging.h:101
NSString * displayName()
Definition OOScript.m:276

◆ scriptDescription

- (NSString *) scriptDescription
implementation

Reimplemented from OOScript.

Definition at line 39 of file OOPListScript.m.

85{
86 return [_metadata objectForKey:kMDKeyDescription];
87}

◆ scriptsFromDictionaryOfScripts:filePath:

+ (NSArray *) scriptsFromDictionaryOfScripts: (NSDictionary *)  dictionary
filePath: (NSString *)  filePath 
implementation

Provided by category OOPListScript(SetUp).

Definition at line 39 of file OOPListScript.m.

125 :(NSDictionary *)dictionary filePath:(NSString *)filePath
126{
127 NSMutableArray *result = nil;
128 NSString *key = nil;
129 NSArray *scriptArray = nil;
130 NSDictionary *metadata = nil;
131 NSMutableDictionary *cachedScripts = nil;
132 OOPListScript *script = nil;
133
134 NSUInteger count = [dictionary count];
135 result = [NSMutableArray arrayWithCapacity:count];
136 cachedScripts = [NSMutableDictionary dictionaryWithCapacity:count];
137
138 metadata = [dictionary objectForKey:kKeyMetadata];
139 if (![metadata isKindOfClass:[NSDictionary class]]) metadata = nil;
140
141 foreachkey (key, dictionary)
142 {
143 scriptArray = [dictionary objectForKey:key];
144 if ([key isKindOfClass:[NSString class]] &&
145 [scriptArray isKindOfClass:[NSArray class]] &&
146 ![key isEqual:kKeyMetadata])
147 {
148 scriptArray = OOSanitizeLegacyScript(scriptArray, key, NO);
149 if (scriptArray != nil)
150 {
151 script = [[self alloc] initWithName:key scriptArray:scriptArray metadata:metadata];
152 if (script != nil)
153 {
154 [result addObject:script];
155 [cachedScripts setObject:[NSDictionary dictionaryWithObjectsAndKeys:scriptArray, kKeyScript, metadata, kKeyMetadata, nil] forKey:key];
156
157 [script release];
158 }
159 }
160 }
161 }
162
163 [[OOCacheManager sharedCache] setObject:cachedScripts forKey:filePath inCache:kCacheName];
164
165 return [[result copy] autorelease];
166}
NSArray * OOSanitizeLegacyScript(NSArray *script, NSString *context, BOOL allowAIMethods)
static NSString *const kKeyMetadata
unsigned count
void setObject:forKey:inCache:(id inElement,[forKey] NSString *inKey,[inCache] NSString *inCacheKey)
OOCacheManager * sharedCache()

◆ scriptsInPListFile:

+ (NSArray *) scriptsInPListFile: (NSString *)  filePath

Definition at line 39 of file OOPListScript.m.

53 :(NSString *)filePath
54{
55 NSDictionary *cachedScripts = [[OOCacheManager sharedCache] objectForKey:filePath inCache:kCacheName];
56 if (cachedScripts != nil)
57 {
58 return [self loadCachedScripts:cachedScripts];
59 }
60 else
61 {
62 NSDictionary *dict = OODictionaryFromFile(filePath);
63 if (dict == nil) return nil;
64 return [self scriptsFromDictionaryOfScripts:dict filePath:filePath];
65 }
66}
NSDictionary * OODictionaryFromFile(NSString *path)
id objectForKey:inCache:(NSString *inKey,[inCache] NSString *inCacheKey)

Referenced by OOScript::descriptionComponents.

+ Here is the caller graph for this function:

◆ version

- (NSString *) version
implementation

Reimplemented from OOScript.

Definition at line 39 of file OOPListScript.m.

91{
92 return [_metadata objectForKey:kMDKeyVersion];
93}

Member Data Documentation

◆ _metadata

- (NSDictionary*) _metadata
private

Definition at line 40 of file OOPListScript.h.

◆ _script

- (NSArray*) _script
private

Definition at line 39 of file OOPListScript.h.


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