Skip to content

Commit bf138d3

Browse files
committed
CATTY-524 Convert Util methods to Swift 3/3
1 parent 4747a20 commit bf138d3

File tree

5 files changed

+104
-65
lines changed

5 files changed

+104
-65
lines changed

src/Catty/Helpers/Util/Util.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,6 @@ if (__functor) __functor(__VA_ARGS__); \
121121

122122
+ (BOOL)isEqual:(id _Nullable)object toObject:(id _Nullable)objectToCompare;
123123

124-
+ (SpriteObject* _Nullable)objectWithName:(NSString* _Nullable)objectName forScene:(Scene* _Nullable)scene;
125-
126-
+ (Sound* _Nullable)soundWithName:(NSString* _Nullable)objectName forObject:(SpriteObject* _Nullable)object;
127-
128-
+ (Look* _Nullable)lookWithName:(NSString* _Nullable)objectName forObject:(SpriteObject* _Nullable)object;
129-
130-
+ (NSMutableOrderedSet* _Nullable)allMessagesForProject:(Project* _Nonnull)project;
131-
132124
+ (BOOL)isNetworkError:(NSError* _Nullable)error;
133125

134126
+ (NSDictionary* _Nullable)getBrickInsertionDictionaryFromUserDefaults;

src/Catty/Helpers/Util/Util.m

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -475,60 +475,6 @@ + (BOOL)isEqual:(id)object toObject:(id)objectToCompare
475475
return NO;
476476
}
477477

478-
+ (SpriteObject*)objectWithName:(NSString*)objectName forScene:(Scene*)scene
479-
{
480-
for(SpriteObject *object in scene.objects) {
481-
if([object.name isEqualToString:objectName]) {
482-
return object;
483-
}
484-
}
485-
return nil;
486-
}
487-
488-
+ (Sound*)soundWithName:(NSString*)objectName forObject:(SpriteObject*)object
489-
{
490-
for(Sound *sound in object.soundList) {
491-
if([sound.name isEqualToString:objectName]) {
492-
return sound;
493-
}
494-
}
495-
return nil;
496-
}
497-
498-
+ (Look*)lookWithName:(NSString*)objectName forObject:(SpriteObject*)object
499-
{
500-
for(Look *look in object.lookList) {
501-
if([look.name isEqualToString:objectName]) {
502-
return look;
503-
}
504-
}
505-
return nil;
506-
}
507-
508-
+ (NSMutableOrderedSet*)allMessagesForProject:(Project*)project
509-
{
510-
NSMutableOrderedSet* messages = [[NSMutableOrderedSet alloc] init];
511-
[messages addObjectsFromArray:project.allBroadcastMessages.array];
512-
for(SpriteObject *object in project.allObjects) {
513-
for(Script *script in object.scriptList) {
514-
if([script isKindOfClass:[BroadcastScript class]]) {
515-
BroadcastScript *broadcastScript = (BroadcastScript*)script;
516-
[messages addObject:broadcastScript.receivedMessage];
517-
}
518-
for(Brick *brick in script.brickList) {
519-
if([brick isKindOfClass:[BroadcastBrick class]]) {
520-
BroadcastBrick *broadcastBrick = (BroadcastBrick*)brick;
521-
[messages addObject:broadcastBrick.broadcastMessage];
522-
} else if([brick isKindOfClass:[BroadcastWaitBrick class]]) {
523-
BroadcastWaitBrick *broadcastBrick = (BroadcastWaitBrick*)brick;
524-
[messages addObject:broadcastBrick.broadcastMessage];
525-
}
526-
}
527-
}
528-
}
529-
return messages;
530-
}
531-
532478
+ (BOOL)isNetworkError:(NSError*)error
533479
{
534480
return error && error.code != kCFURLErrorCancelled;

src/Catty/Helpers/Util/Util.swift

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,36 @@ func synchronized(lock: AnyObject, closure: () -> Void) {
6262
.build().showWithController(Util.topmostViewController())
6363
}
6464

65+
@objc(allMessagesForProject:)
66+
class func allMessages(for project: Project) -> NSOrderedSet {
67+
guard let allBroadcastMessages = project.allBroadcastMessages?.array else {
68+
return []
69+
}
70+
let messages = NSMutableOrderedSet(array: allBroadcastMessages)
71+
72+
for object in project.allObjects() {
73+
for script in object.scriptList {
74+
if let broadcastScript = script as? BroadcastScript {
75+
if let receivedMessage = broadcastScript.receivedMessage {
76+
messages.add(receivedMessage)
77+
}
78+
}
79+
if let script = script as? Script {
80+
for brick in script.brickList {
81+
if let broadcastBrick = brick as? BroadcastBrick {
82+
messages.add(broadcastBrick.broadcastMessage)
83+
} else if let broadcastBrick = brick as? BroadcastWaitBrick {
84+
messages.add(broadcastBrick.broadcastMessage)
85+
}
86+
}
87+
}
88+
}
89+
}
90+
91+
// Return immutable set, because adding items afterwards would have no effect
92+
return NSOrderedSet(orderedSet: messages)
93+
}
94+
6595
class func catrobatLanguageVersion() -> String {
6696
let catrobatLanguageVersion = Bundle.main.infoDictionary?["CatrobatLanguageVersion"] as! String
6797
return catrobatLanguageVersion
@@ -102,6 +132,30 @@ func synchronized(lock: AnyObject, closure: () -> Void) {
102132
}
103133
}
104134

135+
@objc(lookWithName:forObject:)
136+
class func look(with name: String, for object: SpriteObject) -> Look? {
137+
guard let lookList = object.lookList else {
138+
return nil
139+
}
140+
141+
for look in lookList {
142+
if let look = look as? Look, look.name == name {
143+
return look
144+
}
145+
}
146+
147+
return nil
148+
}
149+
150+
@objc(objectWithName:forScene:)
151+
class func object(with name: String, for scene: Scene) -> SpriteObject? {
152+
for object in scene.objects() where object.name == name {
153+
return object
154+
}
155+
156+
return nil
157+
}
158+
105159
class func platformName() -> String? {
106160
let platformName = Bundle.main.infoDictionary?["CatrobatPlatformName"] as? String
107161
return platformName
@@ -211,4 +265,19 @@ func synchronized(lock: AnyObject, closure: () -> Void) {
211265
hud.removeFromSuperview()
212266
})
213267
}
268+
269+
@objc(soundWithName:forObject:)
270+
class func sound(with name: String, for object: SpriteObject) -> Sound? {
271+
guard let soundList = object.soundList else {
272+
return nil
273+
}
274+
275+
for sound in soundList {
276+
if let sound = sound as? Sound, sound.name == name {
277+
return sound
278+
}
279+
}
280+
281+
return nil
282+
}
214283
}

src/Catty/Views/Custom/CollectionViewCells/BrickCellData/BrickCellMessageData.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ - (instancetype)initWithFrame:(CGRect)frame andBrickCell:(BrickCell*)brickCell a
4747
if ([brickCell.scriptOrBrick conformsToProtocol:@protocol(BrickMessageProtocol)]) {
4848
Brick<BrickMessageProtocol> *messageBrick = (Brick<BrickMessageProtocol>*)brickCell.scriptOrBrick;
4949
NSString *currentMessage = [messageBrick messageForLineNumber:line andParameterNumber:parameter];
50-
NSMutableOrderedSet *messages;
50+
NSOrderedSet *messages;
5151
if ([brickCell.scriptOrBrick isKindOfClass:[Script class]]) {
5252
messages = [Util allMessagesForProject: ((Script*)brickCell.scriptOrBrick).object.scene.project];
5353
} else {

src/CattyTests/Utils/UtilTests.swift

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ final class UtilTests: XCTestCase {
168168

169169
let messages = Util.allMessages(for: project)
170170

171-
XCTAssertEqual(messages?.count, 0)
171+
XCTAssertEqual(messages.count, 0)
172172
}
173173

174174
func testAllMessagesForProjectWithValues() {
@@ -194,7 +194,7 @@ final class UtilTests: XCTestCase {
194194

195195
let messages = Util.allMessages(for: project)
196196

197-
XCTAssertEqual(messages?.count, 4)
197+
XCTAssertEqual(messages.count, 4)
198198
}
199199

200200
func testAllMessagesForProjectWithDuplicatedValues() {
@@ -215,4 +215,36 @@ final class UtilTests: XCTestCase {
215215
XCTAssertEqual(statusBarFrame.height, Util.statusBarHeight())
216216
}
217217
}
218+
219+
func testLookWithNameForObject() {
220+
let look = Look(name: "TestLook", filePath: "/test/path")
221+
spriteObject = SpriteObject()
222+
project.scene.add(object: spriteObject!)
223+
spriteObject.lookList.add(look)
224+
225+
let utilLook = Util.look(with: "TestLook", for: spriteObject)
226+
227+
XCTAssertEqual(utilLook, look)
228+
}
229+
230+
func testObjectWithNameForScene() {
231+
spriteObject = SpriteObject()
232+
spriteObject.name = "TestSpriteObject"
233+
project.scene.add(object: spriteObject!)
234+
235+
let utilSpriteObject = Util.object(with: "TestSpriteObject", for: project.scene)
236+
237+
XCTAssertEqual(utilSpriteObject, spriteObject)
238+
}
239+
240+
func testSoundWithNameForObject() {
241+
let sound = Sound(name: "TestSound", fileName: "/test/path")
242+
spriteObject = SpriteObject()
243+
project.scene.add(object: spriteObject!)
244+
spriteObject.soundList.add(sound)
245+
246+
let utilSound = Util.sound(with: "TestSound", for: spriteObject)
247+
248+
XCTAssertEqual(utilSound, sound)
249+
}
218250
}

0 commit comments

Comments
 (0)