DELETED src/.clang-format Index: src/.clang-format ================================================================== --- src/.clang-format +++ /dev/null @@ -1,45 +0,0 @@ -IndentWidth: 8 -TabWidth: 8 -UseTab: ForIndentation -ColumnLimit: 80 -BreakBeforeBinaryOperators: None -BreakBeforeBraces: Custom -BreakBeforeTernaryOperators: true -BraceWrapping: - AfterClass: false - AfterControlStatement: false - AfterEnum: false - AfterFunction: true - AfterNamespace: false - AfterObjCDeclaration: true - AfterStruct: false - AfterUnion: false - AfterExternBlock: false - BeforeCatch: false - BeforeElse: false -AlwaysBreakAfterReturnType: AllDefinitions -AlignAfterOpenBracket: DontAlign -AlignEscapedNewlines: Left -AlignOperands: DontAlign -Cpp11BracedListStyle: false -SpaceBeforeCpp11BracedList: true -ObjCBlockIndentWidth: 8 -ObjCSpaceAfterProperty: true -ObjCSpaceBeforeProtocolList: true -ObjCPropertyAttributeOrder: [ - class, direct, - readonly, readwrite, - nullable, nonnull, null_resettable, null_unspecified, - assign, retain, strong, copy, weak, unsafe_unretained, - atomic, nonatomic, - getter, setter -] -SpaceBeforeInheritanceColon: false -QualifierAlignment: Left -MaxEmptyLinesToKeep: 1 -#RemoveEmptyLinesInUnwrappedLines: true -RemoveSemicolon: true -CompactNamespaces: true -SortIncludes: CaseSensitive -IndentPPDirectives: AfterHash -PPIndentWidth: 1 Index: src/Alias.h ================================================================== --- src/Alias.h +++ src/Alias.h @@ -4,16 +4,16 @@ @interface Alias: Identifier @property (direct, copy, nonatomic) OFString *action; @property (readonly, nonatomic) bool persisted; -+ (instancetype)aliasWithName:(OFString *)name - action:(OFString *)action - persisted:(bool)persisted OF_DIRECT; -- (instancetype)initWithName:(OFString *)name OF_UNAVAILABLE; -- (instancetype)initWithName:(OFString *)name - action:(OFString *)action - persisted:(bool)persisted OF_DESIGNATED_INITIALIZER ++ (instancetype)aliasWithName: (OFString *)name + action: (OFString *)action + persisted: (bool)persisted OF_DIRECT; +- (instancetype)initWithName: (OFString *)name OF_UNAVAILABLE; +- (instancetype)initWithName: (OFString *)name + action: (OFString *)action + persisted: (bool)persisted OF_DESIGNATED_INITIALIZER OF_DIRECT; @end OF_ASSUME_NONNULL_END Index: src/Alias.m ================================================================== --- src/Alias.m +++ src/Alias.m @@ -1,22 +1,22 @@ #import "Alias.h" @implementation Alias -+ (instancetype)aliasWithName:(OFString *)name - action:(OFString *)action - persisted:(bool)persisted; ++ (instancetype)aliasWithName: (OFString *)name + action: (OFString *)action + persisted: (bool)persisted; { - return [[self alloc] initWithName:name - action:action - persisted:persisted]; + return [[self alloc] initWithName: name + action: action + persisted: persisted]; } -- (instancetype)initWithName:(OFString *)name - action:(OFString *)action - persisted:(bool)persisted +- (instancetype)initWithName: (OFString *)name + action: (OFString *)action + persisted: (bool)persisted { - self = [super initWithName:name]; + self = [super initWithName: name]; _action = [action copy]; _persisted = persisted; return self; Index: src/Command.h ================================================================== --- src/Command.h +++ src/Command.h @@ -1,30 +1,30 @@ #import "Identifier.h" OF_ASSUME_NONNULL_BEGIN -#define COMMAND(name, nargs, block_) \ - OF_CONSTRUCTOR() \ - { \ - enqueueInit(^{ \ - Identifier.identifiers[@ #name] = \ - [Command commandWithName:@ #name \ - argumentsTypes:nargs \ - block:block_]; \ - }); \ +#define COMMAND(name, nargs, block_) \ + OF_CONSTRUCTOR() \ + { \ + enqueueInit(^ { \ + Identifier.identifiers[@#name] = \ + [Command commandWithName: @#name \ + argumentsTypes: nargs \ + block: block_]; \ + }); \ } OF_DIRECT_MEMBERS @interface Command: Identifier @property (readonly, nonatomic) int argumentsTypes; -+ (instancetype)commandWithName:(OFString *)name - argumentsTypes:(int)argumentsTypes - block:(id)block; -- (instancetype)initWithName:(OFString *)name OF_UNAVAILABLE; -- (instancetype)initWithName:(OFString *)name - argumentsTypes:(int)argumentsTypes - block:(id)block OF_DESIGNATED_INITIALIZER; -- (int)callWithArguments:(OFArray *)arguments isDown:(bool)isDown; ++ (instancetype)commandWithName: (OFString *)name + argumentsTypes: (int)argumentsTypes + block: (id)block; +- (instancetype)initWithName: (OFString *)name OF_UNAVAILABLE; +- (instancetype)initWithName: (OFString *)name + argumentsTypes: (int)argumentsTypes + block: (id)block OF_DESIGNATED_INITIALIZER; +- (int)callWithArguments: (OFArray *)arguments isDown: (bool)isDown; @end OF_ASSUME_NONNULL_END Index: src/Command.m ================================================================== --- src/Command.m +++ src/Command.m @@ -11,11 +11,11 @@ if (arguments.count >= count) return arguments; copy = [arguments mutableCopy]; while (copy.count < count) - [copy addObject:@""]; + [copy addObject: @""]; [copy makeImmutable]; return copy; } @@ -22,66 +22,66 @@ @implementation Command { id _block; } -+ (instancetype)commandWithName:(OFString *)name - argumentsTypes:(int)argumentsTypes - block:(id)block ++ (instancetype)commandWithName: (OFString *)name + argumentsTypes: (int)argumentsTypes + block: (id)block { - return [[self alloc] initWithName:name - argumentsTypes:argumentsTypes - block:block]; + return [[self alloc] initWithName: name + argumentsTypes: argumentsTypes + block: block]; } -- (instancetype)initWithName:(OFString *)name - argumentsTypes:(int)argumentsTypes - block:(id)block +- (instancetype)initWithName: (OFString *)name + argumentsTypes: (int)argumentsTypes + block: (id)block { - self = [super initWithName:name]; + self = [super initWithName: name]; _argumentsTypes = argumentsTypes; _block = block; return self; } -- (int)callWithArguments:(OFArray *)arguments isDown:(bool)isDown +- (int)callWithArguments: (OFArray *)arguments isDown: (bool)isDown { switch (_argumentsTypes) { case ARG_1INT: if (isDown) { arguments = padArguments(arguments, 2); ((void (^)(int))_block)( - [arguments[1] cube_intValueWithBase:0]); + [arguments[1] cube_intValueWithBase: 0]); } break; case ARG_2INT: if (isDown) { arguments = padArguments(arguments, 3); ((void (^)(int, int))_block)( - [arguments[1] cube_intValueWithBase:0], - [arguments[2] cube_intValueWithBase:0]); + [arguments[1] cube_intValueWithBase: 0], + [arguments[2] cube_intValueWithBase: 0]); } break; case ARG_3INT: if (isDown) { arguments = padArguments(arguments, 4); ((void (^)(int, int, int))_block)( - [arguments[1] cube_intValueWithBase:0], - [arguments[2] cube_intValueWithBase:0], - [arguments[3] cube_intValueWithBase:0]); + [arguments[1] cube_intValueWithBase: 0], + [arguments[2] cube_intValueWithBase: 0], + [arguments[3] cube_intValueWithBase: 0]); } break; case ARG_4INT: if (isDown) { arguments = padArguments(arguments, 5); ((void (^)(int, int, int, int))_block)( - [arguments[1] cube_intValueWithBase:0], - [arguments[2] cube_intValueWithBase:0], - [arguments[3] cube_intValueWithBase:0], - [arguments[4] cube_intValueWithBase:0]); + [arguments[1] cube_intValueWithBase: 0], + [arguments[2] cube_intValueWithBase: 0], + [arguments[3] cube_intValueWithBase: 0], + [arguments[4] cube_intValueWithBase: 0]); } break; case ARG_NONE: if (isDown) ((void (^)())_block)(); @@ -152,13 +152,13 @@ break; case ARG_VARI: if (isDown) // limit, remove ((void (^)(OFString *))_block)([[arguments - objectsInRange:OFMakeRange(1, arguments.count - 1)] - componentsJoinedByString:@" "]); + objectsInRange: OFMakeRange(1, arguments.count - 1)] + componentsJoinedByString: @" "]); break; } return 0; } @end Index: src/ConsoleLine.h ================================================================== --- src/ConsoleLine.h +++ src/ConsoleLine.h @@ -3,8 +3,8 @@ OF_DIRECT_MEMBERS @interface ConsoleLine: OFObject @property (readonly, copy) OFString *text; @property (readonly) int outtime; -+ (instancetype)lineWithText:(OFString *)text outtime:(int)outtime; -- (instancetype)initWithText:(OFString *)text outtime:(int)outtime; ++ (instancetype)lineWithText: (OFString *)text outtime: (int)outtime; +- (instancetype)initWithText: (OFString *)text outtime: (int)outtime; @end Index: src/ConsoleLine.m ================================================================== --- src/ConsoleLine.m +++ src/ConsoleLine.m @@ -1,14 +1,14 @@ #import "ConsoleLine.h" @implementation ConsoleLine -+ (instancetype)lineWithText:(OFString *)text outtime:(int)outtime ++ (instancetype)lineWithText: (OFString *)text outtime: (int)outtime { - return [[self alloc] initWithText:text outtime:outtime]; + return [[self alloc] initWithText: text outtime: outtime]; } -- (instancetype)initWithText:(OFString *)text outtime:(int)outtime +- (instancetype)initWithText: (OFString *)text outtime: (int)outtime { self = [super init]; _text = [text copy]; _outtime = outtime; Index: src/Cube.m ================================================================== --- src/Cube.m +++ src/Cube.m @@ -19,11 +19,11 @@ + (Cube *)sharedInstance { return (Cube *)OFApplication.sharedApplication.delegate; } -- (void)applicationDidFinishLaunching:(OFNotification *)notification +- (void)applicationDidFinishLaunching: (OFNotification *)notification { @autoreleasepool { bool dedicated, windowed; int par = 0, uprate = 0, maxcl = 4; OFString *__autoreleasing sdesc, *__autoreleasing ip; @@ -46,11 +46,11 @@ { 'p', @"password", 1, NULL, &passwd }, { 'c', @"max-clients", 1, NULL, NULL }, { '\0', nil, 0, NULL, NULL } }; OFOptionsParser *optionsParser = - [OFOptionsParser parserWithOptions:options]; + [OFOptionsParser parserWithOptions: options]; OFUnichar option; while ((option = [optionsParser nextOption]) != '\0') { switch (option) { case 'w': _width = optionsParser.argument.intValue; @@ -66,11 +66,11 @@ break; case ':': case '=': case '?': conoutf(@"unknown commandline option"); - [OFApplication terminateWithStatus:1]; + [OFApplication terminateWithStatus: 1]; } } if (sdesc == nil) sdesc = @""; @@ -83,15 +83,15 @@ [OFFileManager.defaultManager currentDirectoryIRI]; _userDataIRI = [OFFileManager.defaultManager currentDirectoryIRI]; [OFFileManager.defaultManager createDirectoryAtIRI: - [_userDataIRI IRIByAppendingPathComponent:@"demos"] - createParents:true]; + [_userDataIRI IRIByAppendingPathComponent: @"demos"] + createParents: true]; [OFFileManager.defaultManager createDirectoryAtIRI: - [_userDataIRI IRIByAppendingPathComponent:@"savegames"] - createParents:true]; + [_userDataIRI IRIByAppendingPathComponent: @"savegames"] + createParents: true]; if (SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO | par) < 0) fatal(@"Unable to initialize SDL"); initEntities(); @@ -143,48 +143,30 @@ log(@"gl"); gl_init(_width, _height); log(@"basetex"); int xs, ys; - if (!installtex(2, - [_gameDataIRI - IRIByAppendingPathComponent:@"data/newchars.png"], - &xs, &ys, false) || - !installtex(3, - [_gameDataIRI IRIByAppendingPathComponent: - @"data/martin/base.png"], - &xs, &ys, false) || - !installtex(6, - [_gameDataIRI IRIByAppendingPathComponent: - @"data/martin/ball1.png"], - &xs, &ys, false) || - !installtex(7, - [_gameDataIRI IRIByAppendingPathComponent: - @"data/martin/smoke.png"], - &xs, &ys, false) || - !installtex(8, - [_gameDataIRI IRIByAppendingPathComponent: - @"data/martin/ball2.png"], - &xs, &ys, false) || - !installtex(9, - [_gameDataIRI IRIByAppendingPathComponent: - @"data/martin/ball3.png"], - &xs, &ys, false) || - !installtex(4, - [_gameDataIRI - IRIByAppendingPathComponent:@"data/explosion.jpg"], - &xs, &ys, false) || - !installtex(5, - [_gameDataIRI - IRIByAppendingPathComponent:@"data/items.png"], - &xs, &ys, false) || - !installtex(1, - [_gameDataIRI - IRIByAppendingPathComponent:@"data/crosshair.png"], - &xs, &ys, false)) + if (!installtex(2, [_gameDataIRI IRIByAppendingPathComponent: + @"data/newchars.png"], &xs, &ys, false) || + !installtex(3, [_gameDataIRI IRIByAppendingPathComponent: + @"data/martin/base.png"], &xs, &ys, false) || + !installtex(6, [_gameDataIRI IRIByAppendingPathComponent: + @"data/martin/ball1.png"], &xs, &ys, false) || + !installtex(7, [_gameDataIRI IRIByAppendingPathComponent: + @"data/martin/smoke.png"], &xs, &ys, false) || + !installtex(8, [_gameDataIRI IRIByAppendingPathComponent: + @"data/martin/ball2.png"], &xs, &ys, false) || + !installtex(9, [_gameDataIRI IRIByAppendingPathComponent: + @"data/martin/ball3.png"], &xs, &ys, false) || + !installtex(4, [_gameDataIRI IRIByAppendingPathComponent: + @"data/explosion.jpg"], &xs, &ys, false) || + !installtex(5, [_gameDataIRI IRIByAppendingPathComponent: + @"data/items.png"], &xs, &ys, false) || + !installtex(1, [_gameDataIRI IRIByAppendingPathComponent: + @"data/crosshair.png"], &xs, &ys, false)) fatal(@"could not find core textures (hint: run cube " - @"from the parent of the bin directory)"); + @"from the parent of the bin directory)"); log(@"sound"); initsound(); log(@"cfg"); @@ -194,13 +176,13 @@ exec(@"data/menus.cfg"); exec(@"data/prefabs.cfg"); exec(@"data/sounds.cfg"); exec(@"servers.cfg"); if (!execfile([_userDataIRI - IRIByAppendingPathComponent:@"config.cfg"])) + IRIByAppendingPathComponent: @"config.cfg"])) execfile([_gameDataIRI - IRIByAppendingPathComponent:@"data/defaults.cfg"]); + IRIByAppendingPathComponent: @"data/defaults.cfg"]); exec(@"autoexec.cfg"); log(@"localconnect"); localconnect(); // if this map is changed, also change depthcorrect() @@ -211,11 +193,11 @@ OFDate *past = [OFDate date]; int ignore = 5; for (;;) { @autoreleasepool { - [OFRunLoop.mainRunLoop runUntilDate:past]; + [OFRunLoop.mainRunLoop runUntilDate: past]; Player *player1 = Player.player1; int millis = SDL_GetTicks() * gamespeed / 100; if (millis - lastmillis > 200) @@ -293,11 +275,11 @@ } } } } -- (void)applicationWillTerminate:(OFNotification *)notification +- (void)applicationWillTerminate: (OFNotification *)notification { stop(); disconnect(true, false); writecfg(); cleangl(); @@ -305,17 +287,17 @@ cleanupserver(); SDL_ShowCursor(1); SDL_Quit(); } -- (void)showMessage:(OFString *)msg +- (void)showMessage: (OFString *)msg { #ifdef _WIN32 MessageBoxW( NULL, msg.UTF16String, L"cube fatal error", MB_OK | MB_SYSTEMMODAL); #else - [OFStdOut writeString:msg]; + [OFStdOut writeString: msg]; #endif } - (void)screenshot { @@ -337,16 +319,15 @@ 3 * _width * (_height - 1 - idx), 3 * _width); endianswap(dest, 3, _width); } - OFString *path = [OFString - stringWithFormat:@"screenshots/screenshot_%d.bmp", - lastmillis]; + OFString *path = [OFString stringWithFormat: + @"screenshots/screenshot_%d.bmp", lastmillis]; SDL_SaveBMP(temp, - [_userDataIRI IRIByAppendingPathComponent:path] - .fileSystemRepresentation.UTF8String); + [_userDataIRI IRIByAppendingPathComponent: path] + .fileSystemRepresentation.UTF8String); SDL_FreeSurface(temp); } SDL_FreeSurface(image); } @@ -353,33 +334,33 @@ } - (void)quit { writeservercfg(); - [OFApplication terminateWithStatus:0]; + [OFApplication terminateWithStatus: 0]; } @end // failure exit void fatal(OFConstantString *s, ...) { va_list args; va_start(args, s); - OFMutableString *msg = [[OFMutableString alloc] initWithFormat:s - arguments:args]; + OFMutableString *msg = [[OFMutableString alloc] initWithFormat: s + arguments: args]; va_end(args); - [msg appendFormat:@" (%s)\n", SDL_GetError()]; + [msg appendFormat: @" (%s)\n", SDL_GetError()]; - [Cube.sharedInstance showMessage:msg]; - [OFApplication terminateWithStatus:1]; + [Cube.sharedInstance showMessage: msg]; + [OFApplication terminateWithStatus: 1]; } // normal exit -COMMAND(quit, ARG_NONE, ^{ +COMMAND(quit, ARG_NONE, ^ { [Cube.sharedInstance quit]; }) -COMMAND(screenshot, ARG_NONE, ^{ +COMMAND(screenshot, ARG_NONE, ^ { [Cube.sharedInstance screenshot]; }) Index: src/DynamicEntity.h ================================================================== --- src/DynamicEntity.h +++ src/DynamicEntity.h @@ -31,10 +31,10 @@ // used by physics to signal ai @property (direct, nonatomic) bool blocked, moving; @property (direct, copy, nonatomic) OFString *name; - (OFData *)dataBySerializing; -- (void)setFromSerializedData:(OFData *)data; +- (void)setFromSerializedData: (OFData *)data; - (void)resetMovement; // reset player state not persistent accross spawns - (void)resetToSpawnState; @end Index: src/DynamicEntity.m ================================================================== --- src/DynamicEntity.m +++ src/DynamicEntity.m @@ -165,32 +165,32 @@ for (int i = 0; i < NUMGUNS; i++) data.ammo[i] = _ammo[i]; memcpy(data.name, _name.UTF8String, min(_name.UTF8StringLength, 259)); - if ([self isKindOfClass:Player.class]) { + if ([self isKindOfClass: Player.class]) { Player *player = (Player *)self; data.lifeSequence = player.lifeSequence, data.frags = player.frags; memcpy(data.team, player.team.UTF8String, min(player.team.UTF8StringLength, 259)); } - if ([self isKindOfClass:Monster.class]) { + if ([self isKindOfClass: Monster.class]) { Monster *monster = (Monster *)self; data.monsterState = monster.monsterState; data.monsterType = monster.monsterType; data.targetYaw = monster.targetYaw; data.trigger = monster.trigger; data.attackTarget = monster.attackTarget; data.anger = monster.anger; } - return [OFData dataWithItems:&data count:sizeof(data)]; + return [OFData dataWithItems: &data count: sizeof(data)]; } -- (void)setFromSerializedData:(OFData *)data +- (void)setFromSerializedData: (OFData *)data { struct dynent d; if (data.count != sizeof(struct dynent)) @throw [OFOutOfRangeException exception]; @@ -237,20 +237,20 @@ _ammo[i] = d.ammo[i]; _blocked = d.blocked; _moving = d.moving; - _name = [[OFString alloc] initWithUTF8String:d.name]; + _name = [[OFString alloc] initWithUTF8String: d.name]; - if ([self isKindOfClass:Player.class]) { + if ([self isKindOfClass: Player.class]) { Player *player = (Player *)self; player.lifeSequence = d.lifeSequence; player.frags = d.frags; player.team = @(d.team); } - if ([self isKindOfClass:Monster.class]) { + if ([self isKindOfClass: Monster.class]) { Monster *monster = (Monster *)self; monster.monsterState = d.monsterState; monster.monsterType = d.monsterType; monster.targetYaw = d.targetYaw; monster.trigger = d.trigger; Index: src/Identifier.h ================================================================== --- src/Identifier.h +++ src/Identifier.h @@ -6,9 +6,9 @@ @property (direct, readonly, copy, nonatomic) OFString *name; @property (class, direct, readonly, nonatomic) OFMutableDictionary *identifiers; - (instancetype)init OF_UNAVAILABLE; -- (instancetype)initWithName:(OFString *)name; +- (instancetype)initWithName: (OFString *)name; @end OF_ASSUME_NONNULL_END Index: src/Identifier.m ================================================================== --- src/Identifier.m +++ src/Identifier.m @@ -13,11 +13,11 @@ + (OFMutableDictionary *)identifiers { return identifiers; } -- (instancetype)initWithName:(OFString *)name +- (instancetype)initWithName: (OFString *)name { self = [super init]; _name = [name copy]; Index: src/KeyMapping.h ================================================================== --- src/KeyMapping.h +++ src/KeyMapping.h @@ -6,11 +6,11 @@ @interface KeyMapping: OFObject @property (readonly) int code; @property (readonly, nonatomic) OFString *name; @property (copy, nonatomic) OFString *action; -+ (instancetype)mappingWithCode:(int)code name:(OFString *)name; ++ (instancetype)mappingWithCode: (int)code name: (OFString *)name; - (instancetype)init OF_UNAVAILABLE; -- (instancetype)initWithCode:(int)code name:(OFString *)name; +- (instancetype)initWithCode: (int)code name: (OFString *)name; @end OF_ASSUME_NONNULL_END Index: src/KeyMapping.m ================================================================== --- src/KeyMapping.m +++ src/KeyMapping.m @@ -1,14 +1,14 @@ #import "KeyMapping.h" @implementation KeyMapping -+ (instancetype)mappingWithCode:(int)code name:(OFString *)name ++ (instancetype)mappingWithCode: (int)code name: (OFString *)name { - return [[self alloc] initWithCode:code name:name]; + return [[self alloc] initWithCode: code name: name]; } -- (instancetype)initWithCode:(int)code name:(OFString *)name +- (instancetype)initWithCode: (int)code name: (OFString *)name { self = [super init]; _code = code; _name = [name copy]; Index: src/MD2.h ================================================================== --- src/MD2.h +++ src/MD2.h @@ -10,20 +10,20 @@ @property (copy, nonatomic) OFString *loadname; @property (nonatomic) int mdlnum; @property (nonatomic) bool loaded; + (instancetype)md2; -- (bool)loadWithIRI:(OFIRI *)IRI; -- (void)renderWithLight:(OFColor *)light - frame:(int)frame - range:(int)range - position:(OFVector3D)position - yaw:(float)yaw - pitch:(float)pitch - scale:(float)scale - speed:(float)speed - snap:(int)snap - basetime:(int)basetime; -- (void)scaleWithFrame:(int)frame scale:(float)scale snap:(int)snap; +- (bool)loadWithIRI: (OFIRI *)IRI; +- (void)renderWithLight: (OFColor *)light + frame: (int)frame + range: (int)range + position: (OFVector3D)position + yaw: (float)yaw + pitch: (float)pitch + scale: (float)scale + speed: (float)speed + snap: (int)snap + basetime: (int)basetime; +- (void)scaleWithFrame: (int)frame scale: (float)scale snap: (int)snap; @end OF_ASSUME_NONNULL_END Index: src/MD2.m ================================================================== --- src/MD2.m +++ src/MD2.m @@ -61,26 +61,26 @@ OFFreeMemory(_mverts[i]); OFFreeMemory(_mverts); } -- (bool)loadWithIRI:(OFIRI *)IRI +- (bool)loadWithIRI: (OFIRI *)IRI { OFSeekableStream *stream; @try { - stream = (OFSeekableStream *)[[OFIRIHandler handlerForIRI:IRI] - openItemAtIRI:IRI - mode:@"r"]; + stream = (OFSeekableStream *)[[OFIRIHandler handlerForIRI: IRI] + openItemAtIRI: IRI + mode: @"r"]; } @catch (id e) { return false; } - if (![stream isKindOfClass:OFSeekableStream.class]) + if (![stream isKindOfClass: OFSeekableStream.class]) return false; struct md2_header header; - [stream readIntoBuffer:&header exactLength:sizeof(header)]; + [stream readIntoBuffer: &header exactLength: sizeof(header)]; endianswap(&header, sizeof(int), sizeof(header) / sizeof(int)); if (header.magic != 844121161 || header.version != 8) return false; @@ -88,13 +88,13 @@ _frames = OFAllocMemory(header.numFrames, header.frameSize); } @catch (OFOutOfMemoryException *e) { return false; } - [stream seekToOffset:header.offsetFrames whence:OFSeekSet]; - [stream readIntoBuffer:_frames - exactLength:header.frameSize * header.numFrames]; + [stream seekToOffset: header.offsetFrames whence: OFSeekSet]; + [stream readIntoBuffer: _frames + exactLength: header.frameSize * header.numFrames]; for (int i = 0; i < header.numFrames; ++i) endianswap(_frames + i * header.frameSize, sizeof(float), 6); @try { @@ -101,13 +101,13 @@ _glCommands = OFAllocMemory(header.numGlCommands, sizeof(int)); } @catch (OFOutOfMemoryException *e) { return false; } - [stream seekToOffset:header.offsetGlCommands whence:OFSeekSet]; - [stream readIntoBuffer:_glCommands - exactLength:header.numGlCommands * sizeof(int)]; + [stream seekToOffset: header.offsetGlCommands whence: OFSeekSet]; + [stream readIntoBuffer: _glCommands + exactLength: header.numGlCommands * sizeof(int)]; endianswap(_glCommands, sizeof(int), header.numGlCommands); _numFrames = header.numFrames; _numGlCommands = header.numGlCommands; _frameSize = header.frameSize; @@ -119,11 +119,11 @@ _mverts = OFAllocZeroedMemory(_numFrames, sizeof(OFVector3D *)); return true; } -- (void)scaleWithFrame:(int)frame scale:(float)scale snap:(int)sn +- (void)scaleWithFrame: (int)frame scale: (float)scale snap: (int)sn { OFAssert(_mverts[frame] == NULL); _mverts[frame] = OFAllocMemory(_numVerts, sizeof(OFVector3D)); struct md2_frame *cf = @@ -137,24 +137,24 @@ -(snap(sn, cv[1] * cf->scale[1]) + cf->translate[1]) / sc; v->z = (snap(sn, cv[2] * cf->scale[2]) + cf->translate[2]) / sc; } } -- (void)renderWithLight:(OFColor *)light - frame:(int)frame - range:(int)range - position:(OFVector3D)position - yaw:(float)yaw - pitch:(float)pitch - scale:(float)sc - speed:(float)speed - snap:(int)sn - basetime:(int)basetime +- (void)renderWithLight: (OFColor *)light + frame: (int)frame + range: (int)range + position: (OFVector3D)position + yaw: (float)yaw + pitch: (float)pitch + scale: (float)sc + speed: (float)speed + snap: (int)sn + basetime: (int)basetime { for (int i = 0; i < range; i++) if (!_mverts[frame + i]) - [self scaleWithFrame:frame + i scale:sc snap:sn]; + [self scaleWithFrame: frame + i scale: sc snap: sn]; glPushMatrix(); glTranslatef(position.x, position.y, position.z); glRotatef(yaw + 180, 0, -1, 0); glRotatef(pitch, 0, 0, 1); Index: src/MapModelInfo.h ================================================================== --- src/MapModelInfo.h +++ src/MapModelInfo.h @@ -5,19 +5,19 @@ OF_DIRECT_MEMBERS @interface MapModelInfo: OFObject @property (nonatomic) int rad, h, zoff, snap; @property (copy, nonatomic) OFString *name; -+ (instancetype)infoWithRad:(int)rad - h:(int)h - zoff:(int)zoff - snap:(int)snap - name:(OFString *)name; ++ (instancetype)infoWithRad: (int)rad + h: (int)h + zoff: (int)zoff + snap: (int)snap + name: (OFString *)name; - (instancetype)init OF_UNAVAILABLE; -- (instancetype)initWithRad:(int)rad - h:(int)h - zoff:(int)zoff - snap:(int)snap - name:(OFString *)name; +- (instancetype)initWithRad: (int)rad + h: (int)h + zoff: (int)zoff + snap: (int)snap + name: (OFString *)name; @end OF_ASSUME_NONNULL_END Index: src/MapModelInfo.m ================================================================== --- src/MapModelInfo.m +++ src/MapModelInfo.m @@ -1,22 +1,26 @@ #import "MapModelInfo.h" @implementation MapModelInfo -+ (instancetype)infoWithRad:(int)rad - h:(int)h - zoff:(int)zoff - snap:(int)snap - name:(OFString *)name ++ (instancetype)infoWithRad: (int)rad + h: (int)h + zoff: (int)zoff + snap: (int)snap + name: (OFString *)name { - return [[self alloc] initWithRad:rad h:h zoff:zoff snap:snap name:name]; + return [[self alloc] initWithRad: rad + h: h + zoff: zoff + snap: snap + name: name]; } -- (instancetype)initWithRad:(int)rad - h:(int)h - zoff:(int)zoff - snap:(int)snap - name:(OFString *)name +- (instancetype)initWithRad: (int)rad + h: (int)h + zoff: (int)zoff + snap: (int)snap + name: (OFString *)name { self = [super init]; _rad = rad; _h = h; Index: src/Menu.h ================================================================== --- src/Menu.h +++ src/Menu.h @@ -9,11 +9,11 @@ @property (readonly, nonatomic) OFString *name; @property (readonly) OFMutableArray *items; @property (nonatomic) int mwidth; @property (nonatomic) int menusel; -+ (instancetype)menuWithName:(OFString *)name; ++ (instancetype)menuWithName: (OFString *)name; - (instancetype)init OF_UNAVAILABLE; -- (instancetype)initWithName:(OFString *)name; +- (instancetype)initWithName: (OFString *)name; @end OF_ASSUME_NONNULL_END Index: src/Menu.m ================================================================== --- src/Menu.m +++ src/Menu.m @@ -1,14 +1,14 @@ #import "Menu.h" @implementation Menu -+ (instancetype)menuWithName:(OFString *)name ++ (instancetype)menuWithName: (OFString *)name { - return [[self alloc] initWithName:name]; + return [[self alloc] initWithName: name]; } -- (instancetype)initWithName:(OFString *)name +- (instancetype)initWithName: (OFString *)name { self = [super init]; _name = [name copy]; _items = [[OFMutableArray alloc] init]; Index: src/MenuItem.h ================================================================== --- src/MenuItem.h +++ src/MenuItem.h @@ -2,9 +2,9 @@ OF_DIRECT_MEMBERS @interface MenuItem: OFObject @property (readonly, nonatomic) OFString *text, *action; -+ (instancetype)itemWithText:(OFString *)text action:(OFString *)action; ++ (instancetype)itemWithText: (OFString *)text action: (OFString *)action; - (instancetype)init OF_UNAVAILABLE; -- (instancetype)initWithText:(OFString *)text action:(OFString *)action; +- (instancetype)initWithText: (OFString *)text action: (OFString *)action; @end Index: src/MenuItem.m ================================================================== --- src/MenuItem.m +++ src/MenuItem.m @@ -1,28 +1,28 @@ #import "MenuItem.h" @implementation MenuItem -+ (instancetype)itemWithText:(OFString *)text action:(OFString *)action ++ (instancetype)itemWithText: (OFString *)text action: (OFString *)action { - return [[self alloc] initWithText:text action:action]; + return [[self alloc] initWithText: text action: action]; } -- (instancetype)initWithText:(OFString *)text action:(OFString *)action +- (instancetype)initWithText: (OFString *)text action: (OFString *)action { self = [super init]; _text = [text copy]; _action = [action copy]; return self; } -- (OFComparisonResult)compare:(id)otherObject +- (OFComparisonResult)compare: (id)otherObject { MenuItem *otherItem; - if (![otherObject isKindOfClass:MenuItem.class]) + if (![otherObject isKindOfClass: MenuItem.class]) @throw [OFInvalidArgumentException exception]; int x, y; @try { x = _text.intValue; Index: src/Monster.h ================================================================== --- src/Monster.h +++ src/Monster.h @@ -23,18 +23,18 @@ + (void)restoreAll; + (void)resetAll; + (void)thinkAll; + (void)renderAll; // TODO: Move this somewhere else -+ (void)endSinglePlayerWithAllKilled:(bool)allKilled; -+ (instancetype)monsterWithType:(int)type - yaw:(int)yaw - state:(int)state - trigger:(int)trigger - move:(int)move; -- (instancetype)initWithType:(int)type - yaw:(int)yaw - state:(int)state - trigger:(int)trigger - move:(int)move; -- (void)incurDamage:(int)damage fromEntity:(__kindof DynamicEntity *)d; ++ (void)endSinglePlayerWithAllKilled: (bool)allKilled; ++ (instancetype)monsterWithType: (int)type + yaw: (int)yaw + state: (int)state + trigger: (int)trigger + move: (int)move; +- (instancetype)initWithType: (int)type + yaw: (int)yaw + state: (int)state + trigger: (int)trigger + move: (int)move; +- (void)incurDamage: (int)damage fromEntity: (__kindof DynamicEntity *)d; @end Index: src/Monster.m ================================================================== --- src/Monster.m +++ src/Monster.m @@ -20,21 +20,21 @@ + (OFMutableArray *)monsters { return monsters; } -+ (instancetype)monsterWithType:(int)type - yaw:(int)yaw - state:(int)state - trigger:(int)trigger - move:(int)move -{ - return [[self alloc] initWithType:type - yaw:yaw - state:state - trigger:trigger - move:move]; ++ (instancetype)monsterWithType: (int)type + yaw: (int)yaw + state: (int)state + trigger: (int)trigger + move: (int)move +{ + return [[self alloc] initWithType: type + yaw: yaw + state: state + trigger: trigger + move: move]; } VARF(skill, 1, 3, 10, conoutf(@"skill is now %d", skill)); // for savegames @@ -73,15 +73,15 @@ @"a knight", @"monster/knight" }, { GUN_SLIMEBALL, 15, 100, 1, 0, 200, 400, 2, 13, 10, S_PAIND, S_DEATHD, @"a goblin", @"monster/goblin" }, }; -- (instancetype)initWithType:(int)type - yaw:(int)yaw - state:(int)state - trigger:(int)trigger - move:(int)move +- (instancetype)initWithType: (int)type + yaw: (int)yaw + state: (int)state + trigger: (int)trigger + move: (int)move { self = [super init]; if (type >= NUMMONSTERTYPES) { conoutf(@"warning: unknown monster in spawn: %d", type); @@ -144,15 +144,15 @@ type = i; break; } } - [monsters addObject:[Monster monsterWithType:type - yaw:rnd(360) - state:M_SEARCH - trigger:1000 - move:1]]; + [monsters addObject: [Monster monsterWithType: type + yaw: rnd(360) + state: M_SEARCH + trigger: 1000 + move: 1]]; } + (void)resetAll { [monsters removeAllObjects]; @@ -169,17 +169,17 @@ for (Entity *e in ents) { if (e.type != MONSTER) continue; - Monster *m = [Monster monsterWithType:e.attr2 - yaw:e.attr1 - state:M_SLEEP - trigger:100 - move:0]; + Monster *m = [Monster monsterWithType: e.attr2 + yaw: e.attr1 + state: M_SLEEP + trigger: 100 + move: 0]; m.origin = OFMakeVector3D(e.x, e.y, e.z); - [monsters addObject:m]; + [monsters addObject: m]; entinmap(m); monstertotal++; } } } @@ -235,19 +235,19 @@ // environment etc., and transition to the next state. Transition timeframes are // parametrized by difficulty level (skill), faster transitions means quicker // decision making means tougher AI. // n = at skill 0, n/2 = at skill 10, r = added random factor -- (void)transitionWithState:(int)state moving:(int)moving n:(int)n r:(int)r +- (void)transitionWithState: (int)state moving: (int)moving n: (int)n r: (int)r { self.monsterState = state; self.move = moving; n = n * 130 / 100; self.trigger = lastmillis + n - skill * (n / 16) + rnd(r + 1); } -- (void)normalizeWithAngle:(float)angle +- (void)normalizeWithAngle: (float)angle { while (self.yaw < angle - 180.0f) self.yaw += 360.0f; while (self.yaw > angle + 180.0f) self.yaw -= 360.0f; @@ -258,11 +258,11 @@ { if (self.enemy.state == CS_DEAD) { self.enemy = Player.player1; self.anger = 0; } - [self normalizeWithAngle:self.targetYaw]; + [self normalizeWithAngle: self.targetYaw]; // slowly turn monster towards his target if (self.targetYaw > self.yaw) { self.yaw += curtime * 0.5f; if (self.targetYaw < self.yaw) self.yaw = self.targetYaw; @@ -286,14 +286,14 @@ // search for a way around (common) else if (self.trigger < lastmillis && (self.monsterState != M_HOME || !rnd(5))) { // patented "random walk" AI pathfinding (tm) ;) self.targetYaw += 180 + rnd(180); - [self transitionWithState:M_SEARCH - moving:1 - n:400 - r:1000]; + [self transitionWithState: M_SEARCH + moving: 1 + n: 400 + r: 1000]; } } float enemyYaw = -(float)atan2(self.enemy.origin.x - self.origin.x, self.enemy.origin.y - self.origin.y) / @@ -303,27 +303,33 @@ switch (self.monsterState) { case M_PAIN: case M_ATTACKING: case M_SEARCH: if (self.trigger < lastmillis) - [self transitionWithState:M_HOME moving:1 n:100 r:200]; + [self transitionWithState: M_HOME + moving: 1 + n: 100 + r: 200]; break; case M_SLEEP: // state classic sp monster start in, wait for visual // contact { OFVector3D target; if (editmode || !enemylos(self, &target)) return; // skip running physics - [self normalizeWithAngle:enemyYaw]; + [self normalizeWithAngle: enemyYaw]; float angle = (float)fabs(enemyYaw - self.yaw); if (disttoenemy < 8 // the better the angle to the player, the // further the monster can see/hear || (disttoenemy < 16 && angle < 135) || (disttoenemy < 32 && angle < 90) || (disttoenemy < 64 && angle < 45) || angle < 10) { - [self transitionWithState:M_HOME moving:1 n:500 r:200]; + [self transitionWithState: M_HOME + moving: 1 + n: 500 + r: 200]; OFVector3D loc = self.origin; playsound(S_GRUNT1 + rnd(2), &loc); } break; } @@ -333,14 +339,14 @@ // firing if (self.trigger < lastmillis) { self.lastAction = 0; self.attacking = true; shoot(self, self.attackTarget); - [self transitionWithState:M_ATTACKING - moving:0 - n:600 - r:0]; + [self transitionWithState: M_ATTACKING + moving: 0 + n: 600 + r: 0]; } break; case M_HOME: // monster has visual contact, heads straight for player and @@ -349,48 +355,48 @@ if (self.trigger < lastmillis) { OFVector3D target; if (!enemylos(self, &target)) { // no visual contact anymore, let monster get // as close as possible then search for player - [self transitionWithState:M_HOME - moving:1 - n:800 - r:500]; + [self transitionWithState: M_HOME + moving: 1 + n: 800 + r: 500]; } else { // the closer the monster is the more likely he // wants to shoot if (!rnd((int)disttoenemy / 3 + 1) && self.enemy.state == CS_ALIVE) { // get ready to fire self.attackTarget = target; int n = monstertypes[self.monsterType].lag; - [self transitionWithState:M_AIMING - moving:0 - n:n - r:10]; + [self transitionWithState: M_AIMING + moving: 0 + n: n + r: 10]; } else { // track player some more int n = monstertypes[self.monsterType].rate; - [self transitionWithState:M_HOME - moving:1 - n:n - r:0]; + [self transitionWithState: M_HOME + moving: 1 + n: n + r: 0]; } } } break; } moveplayer(self, 1, false); // use physics to move monster } -- (void)incurDamage:(int)damage fromEntity:(__kindof DynamicEntity *)d +- (void)incurDamage: (int)damage fromEntity: (__kindof DynamicEntity *)d { // a monster hit us - if ([d isKindOfClass:Monster.class]) { + if ([d isKindOfClass: Monster.class]) { Monster *m = (Monster *)d; // guard for RL guys shooting themselves :) if (self != m) { // don't attack straight away, first get angry @@ -407,14 +413,14 @@ self.anger = 0; self.enemy = d; } // in this state monster won't attack - [self transitionWithState:M_PAIN - moving:0 - n:monstertypes[self.monsterType].pain - r:200]; + [self transitionWithState: M_PAIN + moving: 0 + n: monstertypes[self.monsterType].pain + r: 200]; if ((self.health -= damage) <= 0) { self.state = CS_DEAD; self.lastAction = lastmillis; numkilled++; @@ -428,11 +434,11 @@ OFVector3D loc = self.origin; playsound(monstertypes[self.monsterType].painsound, &loc); } } -+ (void)endSinglePlayerWithAllKilled:(bool)allKilled ++ (void)endSinglePlayerWithAllKilled: (bool)allKilled { conoutf(allKilled ? @"you have cleared the map!" : @"you reached the exit!"); conoutf(@"score: %d kills in %d seconds", numkilled, (lastmillis - mtimestart) / 1000); @@ -448,14 +454,14 @@ nextmonster = lastmillis + 1000; spawnmonster(); } if (monstertotal && !spawnremain && numkilled == monstertotal) - [self endSinglePlayerWithAllKilled:true]; + [self endSinglePlayerWithAllKilled: true]; // equivalent of player entity touch, but only teleports are used - [ents enumerateObjectsUsingBlock:^(Entity *e, size_t i, bool *stop) { + [ents enumerateObjectsUsingBlock: ^ (Entity *e, size_t i, bool *stop) { if (e.type != TELEPORT) return; if (OUTBORD(e.x, e.y)) return; Index: src/OFColor+Cube.m ================================================================== --- src/OFColor+Cube.m +++ src/OFColor+Cube.m @@ -4,9 +4,9 @@ @implementation OFColor (Cube) - (void)cube_setAsGLColor { float red, green, blue, alpha; - [self getRed:&red green:&green blue:&blue alpha:&alpha]; + [self getRed: &red green: &green blue: &blue alpha: &alpha]; glColor4f(red, green, blue, alpha); } @end Index: src/OFString+Cube.h ================================================================== --- src/OFString+Cube.h +++ src/OFString+Cube.h @@ -1,7 +1,7 @@ #import @interface OFString (Cube) @property (readonly, nonatomic) int cube_intValue; -- (int)cube_intValueWithBase:(unsigned char)base; +- (int)cube_intValueWithBase: (unsigned char)base; @end Index: src/OFString+Cube.m ================================================================== --- src/OFString+Cube.m +++ src/OFString+Cube.m @@ -14,14 +14,14 @@ conoutf(@"invalid value: %@", self); return 0; } } -- (int)cube_intValueWithBase:(unsigned char)base +- (int)cube_intValueWithBase: (unsigned char)base { @try { - return [self intValueWithBase:base]; + return [self intValueWithBase: base]; } @catch (OFInvalidFormatException *e) { conoutf(@"invalid value: %@", self); return 0; } @catch (OFOutOfRangeException *e) { conoutf(@"invalid value: %@", self); Index: src/Player.m ================================================================== --- src/Player.m +++ src/Player.m @@ -12,11 +12,11 @@ + (instancetype)player { return [[self alloc] init]; } -+ (void)setPlayer1:(Player *)player1_ ++ (void)setPlayer1: (Player *)player1_ { player1 = player1_; } + (Player *)player1 Index: src/ResolverResult.h ================================================================== --- src/ResolverResult.h +++ src/ResolverResult.h @@ -5,9 +5,11 @@ OF_DIRECT_MEMBERS @interface ResolverResult: OFObject @property (readonly, nonatomic) OFString *query; @property (readonly, nonatomic) ENetAddress address; -+ (instancetype)resultWithQuery:(OFString *)query address:(ENetAddress)address; ++ (instancetype)resultWithQuery: (OFString *)query + address: (ENetAddress)address; - (instancetype)init OF_UNAVAILABLE; -- (instancetype)initWithQuery:(OFString *)query address:(ENetAddress)address; +- (instancetype)initWithQuery: (OFString *)query + address: (ENetAddress)address OF_DESIGNATED_INITIALIZER; @end Index: src/ResolverResult.m ================================================================== --- src/ResolverResult.m +++ src/ResolverResult.m @@ -1,14 +1,14 @@ #import "ResolverResult.h" @implementation ResolverResult -+ (instancetype)resultWithQuery:(OFString *)query address:(ENetAddress)address ++ (instancetype)resultWithQuery: (OFString *)query address: (ENetAddress)address { - return [[self alloc] initWithQuery:query address:address]; + return [[self alloc] initWithQuery: query address: address]; } -- (instancetype)initWithQuery:(OFString *)query address:(ENetAddress)address +- (instancetype)initWithQuery: (OFString *)query address: (ENetAddress)address { self = [super init]; _query = query; _address = address; Index: src/ResolverThread.m ================================================================== --- src/ResolverThread.m +++ src/ResolverThread.m @@ -23,13 +23,13 @@ ENetAddress address = { ENET_HOST_ANY, CUBE_SERVINFO_PORT }; enet_address_set_host(&address, _query.UTF8String); @synchronized(ResolverThread.class) { - [resolverresults - addObject:[ResolverResult resultWithQuery:_query - address:address]]; + [resolverresults addObject: + [ResolverResult resultWithQuery: _query + address: address]]; _query = NULL; _starttime = 0; } } Index: src/ServerInfo.h ================================================================== --- src/ServerInfo.h +++ src/ServerInfo.h @@ -9,9 +9,9 @@ @property (copy, nonatomic) OFString *map; @property (copy, nonatomic) OFString *sdesc; @property (nonatomic) int mode, numplayers, ping, protocol, minremain; @property (nonatomic) ENetAddress address; -+ (instancetype)infoWithName:(OFString *)name; ++ (instancetype)infoWithName: (OFString *)name; - (instancetype)init OF_UNAVAILABLE; -- (instancetype)initWithName:(OFString *)name; +- (instancetype)initWithName: (OFString *)name; @end Index: src/ServerInfo.m ================================================================== --- src/ServerInfo.m +++ src/ServerInfo.m @@ -1,16 +1,16 @@ #import "ServerInfo.h" #include "cube.h" @implementation ServerInfo -+ (instancetype)infoWithName:(OFString *)name; ++ (instancetype)infoWithName: (OFString *)name; { - return [[self alloc] initWithName:name]; + return [[self alloc] initWithName: name]; } -- (instancetype)initWithName:(OFString *)name +- (instancetype)initWithName: (OFString *)name { self = [super init]; _name = [name copy]; _full = @""; @@ -25,18 +25,18 @@ _address.port = CUBE_SERVINFO_PORT; return self; } -- (OFComparisonResult)compare:(ServerInfo *)otherObject +- (OFComparisonResult)compare: (ServerInfo *)otherObject { - if (![otherObject isKindOfClass:ServerInfo.class]) + if (![otherObject isKindOfClass: ServerInfo.class]) @throw [OFInvalidArgumentException exception]; if (_ping > otherObject.ping) return OFOrderedDescending; if (_ping < otherObject.ping) return OFOrderedAscending; - return [_name compare:otherObject.name]; + return [_name compare: otherObject.name]; } @end Index: src/Variable.h ================================================================== --- src/Variable.h +++ src/Variable.h @@ -1,100 +1,108 @@ #import "Identifier.h" OF_ASSUME_NONNULL_BEGIN -#define VARP(name, min_, cur, max_) \ - int name = cur; \ - \ - OF_CONSTRUCTOR() \ - { \ - enqueueInit(^{ \ - Variable *variable = \ - [Variable variableWithName:@ #name \ - min:min_ \ - max:max_ \ - storage:&name \ - function:NULL \ - persisted:true]; \ - Identifier.identifiers[@ #name] = variable; \ - }); \ - } -#define VAR(name, min_, cur, max_) \ - int name = cur; \ - \ - OF_CONSTRUCTOR() \ - { \ - enqueueInit(^{ \ - Variable *variable = \ - [Variable variableWithName:@ #name \ - min:min_ \ - max:max_ \ - storage:&name \ - function:NULL \ - persisted:false]; \ - Identifier.identifiers[@ #name] = variable; \ - }); \ - } -#define VARF(name, min_, cur, max_, body) \ - static void var_##name(); \ - static int name = cur; \ - \ - OF_CONSTRUCTOR() \ - { \ - enqueueInit(^{ \ - Variable *variable = \ - [Variable variableWithName:@ #name \ - min:min_ \ - max:max_ \ - storage:&name \ - function:var_##name \ - persisted:false]; \ - Identifier.identifiers[@ #name] = variable; \ - }); \ - } \ - \ - static void var_##name() { body; } -#define VARFP(name, min_, cur, max_, body) \ - static void var_##name(); \ - static int name = cur; \ - \ - OF_CONSTRUCTOR() \ - { \ - enqueueInit(^{ \ - Variable *variable = \ - [Variable variableWithName:@ #name \ - min:min_ \ - max:max_ \ - storage:&name \ - function:var_##name \ - persisted:true]; \ - Identifier.identifiers[@ #name] = variable; \ - }); \ - } \ - \ - static void var_##name() { body; } +#define VARP(name, min_, cur, max_) \ + int name = cur; \ + \ + OF_CONSTRUCTOR() \ + { \ + enqueueInit(^ { \ + Variable *variable = \ + [Variable variableWithName: @#name \ + min: min_ \ + max: max_ \ + storage: &name \ + function: NULL \ + persisted: true]; \ + Identifier.identifiers[@#name] = variable; \ + }); \ + } +#define VAR(name, min_, cur, max_) \ + int name = cur; \ + \ + OF_CONSTRUCTOR() \ + { \ + enqueueInit(^ { \ + Variable *variable = \ + [Variable variableWithName: @#name \ + min: min_ \ + max: max_ \ + storage: &name \ + function: NULL \ + persisted: false]; \ + Identifier.identifiers[@#name] = variable; \ + }); \ + } +#define VARF(name, min_, cur, max_, body) \ + static void var_##name(void); \ + static int name = cur; \ + \ + OF_CONSTRUCTOR() \ + { \ + enqueueInit(^ { \ + Variable *variable = \ + [Variable variableWithName: @#name \ + min: min_ \ + max: max_ \ + storage: &name \ + function: var_##name \ + persisted: false]; \ + Identifier.identifiers[@#name] = variable; \ + }); \ + } \ + \ + static void \ + var_##name(void) \ + { \ + body; \ + } +#define VARFP(name, min_, cur, max_, body) \ + static void var_##name(void); \ + static int name = cur; \ + \ + OF_CONSTRUCTOR() \ + { \ + enqueueInit(^ { \ + Variable *variable = \ + [Variable variableWithName: @#name \ + min: min_ \ + max: max_ \ + storage: &name \ + function: var_##name \ + persisted: true]; \ + Identifier.identifiers[@#name] = variable; \ + }); \ + } \ + \ + static void \ + var_##name(void) \ + { \ + body; \ + } @interface Variable: Identifier @property (direct, readonly, nonatomic) int min, max; @property (direct, readonly, nonatomic) int *storage; @property (direct, readonly, nullable, nonatomic) void (*function)(); @property (readonly, nonatomic) bool persisted; -+ (instancetype)variableWithName:(OFString *)name - min:(int)min - max:(int)max - storage:(int *)storage - function:(void (*_Nullable)())function - persisted:(bool)persisted OF_DIRECT; -- (instancetype)initWithName:(OFString *)name OF_UNAVAILABLE; -- (instancetype)initWithName:(OFString *)name - min:(int)min - max:(int)max - storage:(int *)storage - function:(void (*_Nullable)())function - persisted:(bool)persisted OF_DESIGNATED_INITIALIZER ++ (instancetype)variableWithName: (OFString *)name + min: (int)min + max: (int)max + storage: (int *)storage + function: (void (*_Nullable)())function + persisted: (bool)persisted OF_DIRECT; +- (instancetype)initWithName: (OFString *)name OF_UNAVAILABLE; +- (instancetype)initWithName: (OFString *)name + min: (int)min + max: (int)max + storage: (int *)storage + function: (void (*_Nullable)())function + persisted: (bool)persisted OF_DESIGNATED_INITIALIZER OF_DIRECT; - (void)printValue OF_DIRECT; -- (void)setValue:(int)value OF_DIRECT; +- (void)setValue: (int)value OF_DIRECT; @end OF_ASSUME_NONNULL_END Index: src/Variable.m ================================================================== --- src/Variable.m +++ src/Variable.m @@ -1,33 +1,33 @@ #import "Variable.h" #include "cube.h" @implementation Variable -+ (instancetype)variableWithName:(OFString *)name - min:(int)min - max:(int)max - storage:(int *)storage - function:(void (*__cdecl)())function - persisted:(bool)persisted -{ - return [[self alloc] initWithName:name - min:min - max:max - storage:storage - function:function - persisted:persisted]; -} - -- (instancetype)initWithName:(OFString *)name - min:(int)min - max:(int)max - storage:(int *)storage - function:(void (*__cdecl)())function - persisted:(bool)persisted -{ - self = [super initWithName:name]; ++ (instancetype)variableWithName: (OFString *)name + min: (int)min + max: (int)max + storage: (int *)storage + function: (void (*__cdecl)())function + persisted: (bool)persisted +{ + return [[self alloc] initWithName: name + min: min + max: max + storage: storage + function: function + persisted: persisted]; +} + +- (instancetype)initWithName: (OFString *)name + min: (int)min + max: (int)max + storage: (int *)storage + function: (void (*__cdecl)())function + persisted: (bool)persisted +{ + self = [super initWithName: name]; _min = min; _max = max; _storage = storage; _function = function; @@ -39,11 +39,11 @@ - (void)printValue { conoutf(@"%@ = %d", self.name, *_storage); } -- (void)setValue:(int)value +- (void)setValue: (int)value { bool outOfRange = false; if (_min > _max) { conoutf(@"variable is read-only"); Index: src/clientextras.m ================================================================== --- src/clientextras.m +++ src/clientextras.m @@ -49,25 +49,25 @@ if (mz < -1000) return; // mdl = (((int)d>>6)&1)+1; // mz = d.o.z-d.eyeHeight+0.2f; // scale = 1.2f; - } else if (d.state == CS_EDITING) { + } else if (d.state == CS_EDITING) n = 16; - } else if (d.state == CS_LAGGED) { + else if (d.state == CS_LAGGED) n = 17; - } else if ([d isKindOfClass:Monster.class] && - ((Monster *)d).monsterState == M_ATTACKING) { + else if ([d isKindOfClass: Monster.class] && + ((Monster *)d).monsterState == M_ATTACKING) n = 8; - } else if ([d isKindOfClass:Monster.class] && - ((Monster *)d).monsterState == M_PAIN) { + else if ([d isKindOfClass: Monster.class] && + ((Monster *)d).monsterState == M_PAIN) n = 10; - } else if ((!d.move && !d.strafe) || !d.moving) { + else if ((!d.move && !d.strafe) || !d.moving) n = 12; - } else if (!d.onFloor && d.timeInAir > 100) { + else if (!d.onFloor && d.timeInAir > 100) n = 18; - } else { + else { n = 14; speed = 1200 / d.maxSpeed * scale; if (hellpig) speed = 300 / d.maxSpeed; } @@ -84,18 +84,17 @@ extern int democlientnum; void renderclients() { - [players - enumerateObjectsUsingBlock:^(Player *player, size_t i, bool *stop) { - if ([player isKindOfClass:Player.class] && - (!demoplayback || i != democlientnum)) - renderclient(player, - isteam(Player.player1.team, [player team]), - @"monster/ogro", false, 1.0f); - }]; + [players enumerateObjectsUsingBlock: ^ (Player *player, size_t i, + bool *stop) { + if ([player isKindOfClass: Player.class] && + (!demoplayback || i != democlientnum)) + renderclient(player, isteam(Player.player1.team, + [player team]), @"monster/ogro", false, 1.0f); + }]; } // creation of scoreboard pseudo-menu bool scoreson = false; @@ -110,20 +109,20 @@ static OFMutableArray *scoreLines; static void renderscore(Player *d) { - OFString *lag = [OFString stringWithFormat:@"%d", d.lag]; - OFString *name = [OFString stringWithFormat:@"(%@)", d.name]; - OFString *line = [OFString stringWithFormat:@"%d\t%@\t%d\t%@\t%@", + OFString *lag = [OFString stringWithFormat: @"%d", d.lag]; + OFString *name = [OFString stringWithFormat: @"(%@)", d.name]; + OFString *line = [OFString stringWithFormat: @"%d\t%@\t%d\t%@\t%@", d.frags, (d.state == CS_LAGGED ? @"LAG" : lag), d.ping, d.team, (d.state == CS_DEAD ? name : d.name)]; if (scoreLines == nil) scoreLines = [[OFMutableArray alloc] init]; - [scoreLines addObject:line]; + [scoreLines addObject: line]; menumanual(0, scoreLines.count - 1, line); } #define maxTeams 4 @@ -133,11 +132,11 @@ static void addteamscore(Player *d) { for (size_t i = 0; i < teamsUsed; i++) { - if ([teamName[i] isEqual:d.team]) { + if ([teamName[i] isEqual: d.team]) { teamScore[i] += d.frags; return; } } @@ -155,32 +154,32 @@ return; [scoreLines removeAllObjects]; if (!demoplayback) renderscore(Player.player1); for (Player *player in players) - if ([player isKindOfClass:Player.class]) + if ([player isKindOfClass: Player.class]) renderscore(player); sortmenu(); if (m_teammode) { teamsUsed = 0; for (Player *player in players) - if ([player isKindOfClass:Player.class]) + if ([player isKindOfClass: Player.class]) addteamscore(player); if (!demoplayback) addteamscore(Player.player1); OFMutableString *teamScores = [OFMutableString string]; for (size_t j = 0; j < teamsUsed; j++) - [teamScores appendFormat:@"[ %@: %d ]", teamName[j], - teamScore[j]]; + [teamScores appendFormat: + @"[ %@: %d ]", teamName[j], teamScore[j]]; menumanual(0, scoreLines.count, @""); menumanual(0, scoreLines.count + 1, teamScores); } } // sendmap/getmap commands, should be replaced by more intuitive map downloading -COMMAND(sendmap, ARG_1STR, (^(OFString *mapname) { +COMMAND(sendmap, ARG_1STR, (^ (OFString *mapname) { if (mapname.length > 0) save_world(mapname); changemap(mapname); mapname = getclientmap(); OFData *mapdata = readmap(mapname); @@ -202,18 +201,16 @@ p += mapdata.count; *(unsigned short *)start = ENET_HOST_TO_NET_16(p - start); enet_packet_resize(packet, p - start); sendpackettoserv(packet); conoutf(@"sending map %@ to server...", mapname); - OFString *msg = - [OFString stringWithFormat:@"[map %@ uploaded to server, " - @"\"getmap\" to receive it]", - mapname]; + OFString *msg = [OFString stringWithFormat: + @"[map %@ uploaded to server, \"getmap\" to receive it]", mapname]; toserver(msg); })) -COMMAND(getmap, ARG_NONE, ^{ +COMMAND(getmap, ARG_NONE, ^ { ENetPacket *packet = enet_packet_create(NULL, MAXTRANS, ENET_PACKET_FLAG_RELIABLE); unsigned char *start = packet->data; unsigned char *p = start + 2; putint(&p, SV_RECVMAP); Index: src/clientgame.m ================================================================== --- src/clientgame.m +++ src/clientgame.m @@ -11,11 +11,11 @@ #import "Variable.h" int nextmode = 0; // nextmode becomes gamemode after next map load VAR(gamemode, 1, 0, 0); -COMMAND(mode, ARG_1INT, ^(int n) { +COMMAND(mode, ARG_1INT, ^ (int n) { addmsg(1, 2, SV_GAMEMODE, nextmode = n); }) bool intermission = false; @@ -51,11 +51,11 @@ static void arenacount(Player *d, int *alive, int *dead, OFString **lastteam, bool *oneteam) { if (d.state != CS_DEAD) { (*alive)++; - if (![*lastteam isEqual:d.team]) + if (![*lastteam isEqual: d.team]) *oneteam = false; *lastteam = d.team; } else (*dead)++; } @@ -100,26 +100,26 @@ extern int democlientnum; void otherplayers() { - [players - enumerateObjectsUsingBlock:^(Player *player, size_t i, bool *stop) { - if ([player isKindOfClass:Player.class]) - return; - - const int lagtime = lastmillis - player.lastUpdate; - if (lagtime > 1000 && player.state == CS_ALIVE) { - player.state = CS_LAGGED; - return; - } - - if (lagtime && player.state != CS_DEAD && - (!demoplayback || i != democlientnum)) - // use physics to extrapolate player position - moveplayer(player, 2, false); - }]; + [players enumerateObjectsUsingBlock: ^ (Player *player, size_t i, + bool *stop) { + if ([player isKindOfClass: Player.class]) + return; + + const int lagtime = lastmillis - player.lastUpdate; + if (lagtime > 1000 && player.state == CS_ALIVE) { + player.state = CS_LAGGED; + return; + } + + if (lagtime && player.state != CS_DEAD && + (!demoplayback || i != democlientnum)) + // use physics to extrapolate player position + moveplayer(player, 2, false); + }]; } void respawn() { @@ -138,11 +138,11 @@ } } int sleepwait = 0; static OFString *sleepcmd = nil; -COMMAND(sleep, ARG_2STR, ^(OFString *msec, OFString *cmd) { +COMMAND(sleep, ARG_2STR, ^ (OFString *msec, OFString *cmd) { sleepwait = msec.cube_intValue + lastmillis; sleepcmd = cmd; }) void @@ -235,38 +235,38 @@ d.state = CS_ALIVE; } // movement input code -#define dir(name, v, d, s, os) \ - COMMAND(name, ARG_DOWN, ^(bool isDown) { \ - Player *player1 = Player.player1; \ - player1.s = isDown; \ - player1.v = isDown ? d : (player1.os ? -(d) : 0); \ - player1.lastMove = lastmillis; \ +#define dir(name, v, d, s, os) \ + COMMAND(name, ARG_DOWN, ^ (bool isDown) { \ + Player *player1 = Player.player1; \ + player1.s = isDown; \ + player1.v = isDown ? d : (player1.os ? -(d) : 0); \ + player1.lastMove = lastmillis; \ }) dir(backward, move, -1, k_down, k_up); dir(forward, move, 1, k_up, k_down); dir(left, strafe, 1, k_left, k_right); dir(right, strafe, -1, k_right, k_left); -COMMAND(attack, ARG_DOWN, ^(bool on) { +COMMAND(attack, ARG_DOWN, ^ (bool on) { if (intermission) return; if (editmode) editdrag(on); else if ((Player.player1.attacking = on)) respawn(); }) -COMMAND(jump, ARG_DOWN, ^(bool on) { +COMMAND(jump, ARG_DOWN, ^ (bool on) { if (!intermission && (Player.player1.jumpNext = on)) respawn(); }) -COMMAND(showscores, ARG_DOWN, ^(bool isDown) { +COMMAND(showscores, ARG_DOWN, ^ (bool isDown) { showscores(isDown); }) void fixplayer1range() @@ -374,11 +374,11 @@ neterr(@"clientnum"); return nil; } while (cn >= players.count) - [players addObject:[OFNull null]]; + [players addObject: [OFNull null]]; id player = players[cn]; if (player == [OFNull null]) { player = [Player player]; players[cn] = player; @@ -391,11 +391,11 @@ setclient(int cn, id client) { if (cn < 0 || cn >= MAXCLIENTS) neterr(@"clientnum"); while (cn >= players.count) - [players addObject:[OFNull null]]; + [players addObject: [OFNull null]]; players[cn] = client; } void initclient() @@ -416,11 +416,11 @@ projreset(); spawncycle = -1; spawnplayer(Player.player1); Player.player1.frags = 0; for (Player *player in players) - if ([player isKindOfClass:Player.class]) + if ([player isKindOfClass: Player.class]) player.frags = 0; resetspawns(); clientmap = name; if (editmode) toggleedit(); @@ -431,8 +431,8 @@ intermission = false; Cube.sharedInstance.framesInMap = 0; conoutf(@"game mode is %@", modestr(gamemode)); } -COMMAND(map, ARG_1STR, ^(OFString *name) { +COMMAND(map, ARG_1STR, ^ (OFString *name) { changemap(name); }) Index: src/clients.m ================================================================== --- src/clients.m +++ src/clients.m @@ -66,39 +66,39 @@ newname(OFString *name) { c2sinit = false; if (name.length > 16) - name = [name substringToIndex:16]; + name = [name substringToIndex: 16]; Player.player1.name = name; } -COMMAND(name, ARG_1STR, ^(OFString *name) { +COMMAND(name, ARG_1STR, ^ (OFString *name) { newname(name); }) static void newteam(OFString *name) { c2sinit = false; if (name.length > 5) - name = [name substringToIndex:5]; + name = [name substringToIndex: 5]; Player.player1.team = name; } -COMMAND(team, ARG_1STR, ^(OFString *name) { +COMMAND(team, ARG_1STR, ^ (OFString *name) { newteam(name); }) void writeclientinfo(OFStream *stream) { - [stream writeFormat:@"name \"%@\"\nteam \"%@\"\n", Player.player1.name, - Player.player1.team]; + [stream writeFormat: @"name \"%@\"\nteam \"%@\"\n", + Player.player1.name, Player.player1.team]; } void connects(OFString *servername) { @@ -183,20 +183,20 @@ { conoutf(@"%@:\f %@", Player.player1.name, text); ctext = text; } -COMMAND(echo, ARG_VARI, ^(OFString *text) { +COMMAND(echo, ARG_VARI, ^ (OFString *text) { conoutf(@"%@", text); }) -COMMAND(say, ARG_VARI, ^(OFString *text) { +COMMAND(say, ARG_VARI, ^ (OFString *text) { toserver(text); }) -COMMAND(connect, ARG_1STR, ^(OFString *servername) { +COMMAND(connect, ARG_1STR, ^ (OFString *servername) { connects(servername); }) -COMMAND(disconnect, ARG_NONE, ^{ +COMMAND(disconnect, ARG_NONE, ^ { trydisconnect(); }) // collect c2s messages conveniently @@ -213,29 +213,29 @@ if (messages.count == 100) { conoutf(@"command flood protection (type %d)", type); return; } - OFMutableData *msg = [OFMutableData dataWithItemSize:sizeof(int) - capacity:num + 2]; - [msg addItem:&num]; - [msg addItem:&rel]; - [msg addItem:&type]; + OFMutableData *msg = [OFMutableData dataWithItemSize: sizeof(int) + capacity: num + 2]; + [msg addItem: &num]; + [msg addItem: &rel]; + [msg addItem: &type]; va_list marker; va_start(marker, type); for (int i = 0; i < num - 1; i++) { int tmp = va_arg(marker, int); - [msg addItem:&tmp]; + [msg addItem: &tmp]; } va_end(marker); [msg makeImmutable]; if (messages == nil) messages = [[OFMutableArray alloc] init]; - [messages addObject:msg]; + [messages addObject: msg]; } void server_err() { @@ -247,11 +247,11 @@ OFString *toservermap; bool senditemstoserver = false; // after a map change, since server doesn't have map data OFString *clientpassword; -COMMAND(password, ARG_1STR, ^(OFString *p) { +COMMAND(password, ARG_1STR, ^ (OFString *p) { clientpassword = p; }) bool netmapstart() @@ -315,14 +315,13 @@ // quantize to 1/100, almost always 1 byte putint(&p, (int)(d.velocity.x * DVF)); putint(&p, (int)(d.velocity.y * DVF)); putint(&p, (int)(d.velocity.z * DVF)); // pack rest in 1 byte: strafe:2, move:2, onFloor:1, state:3 - putint(&p, - (d.strafe & 3) | ((d.move & 3) << 2) | - (((int)d.onFloor) << 4) | - ((editmode ? CS_EDITING : d.state) << 5)); + putint(&p, (d.strafe & 3) | ((d.move & 3) << 2) | + (((int)d.onFloor) << 4) | + ((editmode ? CS_EDITING : d.state) << 5)); if (senditemstoserver) { packet->flags = ENET_PACKET_FLAG_RELIABLE; putint(&p, SV_ITEMLIST); if (!m_noitems) @@ -347,14 +346,14 @@ sendstring(Player.player1.team, &p); putint(&p, Player.player1.lifeSequence); } for (OFData *msg in messages) { // send messages collected during the previous frames - if (*(int *)[msg itemAtIndex:1]) + if (*(int *)[msg itemAtIndex: 1]) packet->flags = ENET_PACKET_FLAG_RELIABLE; - for (int i = 0; i < *(int *)[msg itemAtIndex:0]; i++) - putint(&p, *(int *)[msg itemAtIndex:i + 2]); + for (int i = 0; i < *(int *)[msg itemAtIndex: 0]; i++) + putint(&p, *(int *)[msg itemAtIndex: i + 2]); } [messages removeAllObjects]; if (lastmillis - lastping > 250) { putint(&p, SV_PING); putint(&p, lastmillis); Index: src/clients2c.m ================================================================== --- src/clients2c.m +++ src/clients2c.m @@ -172,14 +172,14 @@ break; } // server requests next map case SV_MAPRELOAD: { getint(&p); - OFString *nextmapalias = [OFString - stringWithFormat:@"nextmap_%@", getclientmap()]; - OFString *map = - getalias(nextmapalias); // look up map in the cycle + OFString *nextmapalias = [OFString stringWithFormat: + @"nextmap_%@", getclientmap()]; + // look up map in the cycle + OFString *map = getalias(nextmapalias); changemap(map != nil ? map : getclientmap()); break; } // another client either connected or changed name/team @@ -186,11 +186,11 @@ case SV_INITC2S: { Player *d_ = (Player *)d; sgetstr(); if (d_.name.length > 0) { // already connected - if (![d_.name isEqual:@(text)]) + if (![d_.name isEqual: @(text)]) conoutf(@"%@ is now known as %s", d_.name, text); } else { // new client @@ -277,11 +277,11 @@ d_.lifeSequence++; break; } case SV_FRAGS: - OFAssert([players[cn] isKindOfClass:Player.class]); + OFAssert([players[cn] isKindOfClass: Player.class]); ((Player *)players[cn]).frags = getint(&p); break; case SV_ITEMPICKUP: setspawn(getint(&p), false); @@ -340,11 +340,11 @@ unsigned int i = getint(&p); while (ents.count <= i) { Entity *e = [Entity entity]; e.type = NOTUSED; - [ents addObject:e]; + [ents addObject: e]; } int to = ents[i].type; ents[i].type = getint(&p); ents[i].x = getint(&p); @@ -370,11 +370,11 @@ lastmillis - getint(&p)) / 6); break; case SV_CLIENTPING: - OFAssert([players[cn] isKindOfClass:Player.class]); + OFAssert([players[cn] isKindOfClass: Player.class]); ((Player *)players[cn]).ping = getint(&p); break; case SV_GAMEMODE: nextmode = getint(&p); Index: src/commands.m ================================================================== --- src/commands.m +++ src/commands.m @@ -19,41 +19,41 @@ alias(OFString *name, OFString *action) { Alias *alias = Identifier.identifiers[name]; if (alias == nil) - Identifier.identifiers[name] = [Alias aliasWithName:name - action:action - persisted:true]; + Identifier.identifiers[name] = [Alias aliasWithName: name + action: action + persisted: true]; else { - if ([alias isKindOfClass:Alias.class]) + if ([alias isKindOfClass: Alias.class]) alias.action = action; else conoutf( @"cannot redefine builtin %@ with an alias", name); } } -COMMAND(alias, ARG_2STR, ^(OFString *name, OFString *action) { +COMMAND(alias, ARG_2STR, ^ (OFString *name, OFString *action) { alias(name, action); }) void setvar(OFString *name, int i) { Variable *variable = Identifier.identifiers[name]; - if ([variable isKindOfClass:Variable.class]) + if ([variable isKindOfClass: Variable.class]) *variable.storage = i; } int getvar(OFString *name) { Variable *variable = Identifier.identifiers[name]; - if ([variable isKindOfClass:Variable.class]) + if ([variable isKindOfClass: Variable.class]) return *variable.storage; return 0; } @@ -66,11 +66,11 @@ OFString * getalias(OFString *name) { Alias *alias = Identifier.identifiers[name]; - if ([alias isKindOfClass:Alias.class]) + if ([alias isKindOfClass: Alias.class]) return alias.action; return nil; } @@ -96,12 +96,12 @@ } char *s = strndup(word, *p - word - 1); if (left == '(') { OFString *t; @try { - t = [OFString - stringWithFormat:@"%d", execute(@(s), true)]; + t = [OFString stringWithFormat: + @"%d", execute(@(s), true)]; } @finally { free(s); } s = strdup(t.UTF8String); } @@ -138,60 +138,61 @@ // find value of ident referenced with $ in exp OFString * lookup(OFString *n) { __kindof Identifier *identifier = - Identifier.identifiers[[n substringFromIndex:1]]; + Identifier.identifiers[[n substringFromIndex: 1]]; - if ([identifier isKindOfClass:Variable.class]) { - return [OFString stringWithFormat:@"%d", *[identifier storage]]; - } else if ([identifier isKindOfClass:Alias.class]) + if ([identifier isKindOfClass: Variable.class]) { + return [OFString stringWithFormat: + @"%d", *[identifier storage]]; + } else if ([identifier isKindOfClass: Alias.class]) return [identifier action]; - conoutf(@"unknown alias lookup: %@", [n substringFromIndex:1]); + conoutf(@"unknown alias lookup: %@", [n substringFromIndex: 1]); return n; } int executeIdentifier(__kindof Identifier *identifier, OFArray *arguments, bool isDown) { if (identifier == nil) { @try { - return [arguments[0] intValueWithBase:0]; + return [arguments[0] intValueWithBase: 0]; } @catch (OFInvalidFormatException *e) { conoutf(@"unknown command: %@", arguments[0]); return 0; } @catch (OFOutOfRangeException *e) { conoutf(@"invalid value: %@", arguments[0]); return 0; } } - if ([identifier isKindOfClass:Command.class]) + if ([identifier isKindOfClass: Command.class]) // game defined commands use very ad-hoc function signature, // and just call it - return [identifier callWithArguments:arguments isDown:isDown]; + return [identifier callWithArguments: arguments isDown: isDown]; - if ([identifier isKindOfClass:Variable.class]) { + if ([identifier isKindOfClass: Variable.class]) { if (!isDown) return 0; // game defined variables if (arguments.count < 2 || arguments[1].length == 0) [identifier printValue]; else - [identifier - setValue:[arguments[1] cube_intValueWithBase:0]]; + [identifier setValue: + [arguments[1] cube_intValueWithBase: 0]]; } - if ([identifier isKindOfClass:Alias.class]) { + if ([identifier isKindOfClass: Alias.class]) { // alias, also used as functions and (global) variables for (int i = 1; i < arguments.count; i++) { // set any arguments as (global) arg values so // functions can access them - OFString *t = [OFString stringWithFormat:@"arg%d", i]; + OFString *t = [OFString stringWithFormat: @"arg%d", i]; alias(t, arguments[i]); } return execute([identifier action], isDown); } @@ -237,20 +238,20 @@ p += strcspn(p, ";\n\0"); // more statements if this isn't the end of the string cont = *p++ != 0; OFString *c = w[0]; // strip irc-style command prefix - if ([c hasPrefix:@"/"]) { - c = [c substringFromIndex:1]; + if ([c hasPrefix: @"/"]) { + c = [c substringFromIndex: 1]; w[0] = c; } // empty statement if (c.length == 0) continue; val = executeIdentifier(Identifier.identifiers[c], - [OFArray arrayWithObjects:w count:numargs], isDown); + [OFArray arrayWithObjects: w count: numargs], isDown); } return val; } @@ -265,12 +266,12 @@ } void complete(OFMutableString *s) { - if (![s hasPrefix:@"/"]) - [s insertString:@"/" atIndex:0]; + if (![s hasPrefix: @"/"]) + [s insertString: @"/" atIndex: 0]; if (s.length == 1) return; if (!completesize) { @@ -277,17 +278,17 @@ completesize = s.length - 1; completeidx = 0; } __block int idx = 0; - [Identifier.identifiers enumerateKeysAndObjectsUsingBlock:^( - OFString *name, __kindof Identifier *identifier, bool *stop) { + [Identifier.identifiers enumerateKeysAndObjectsUsingBlock: + ^ (OFString *name, __kindof Identifier *identifier, bool *stop) { if (strncmp(identifier.name.UTF8String, s.UTF8String + 1, - completesize) == 0 && - idx++ == completeidx) - [s replaceCharactersInRange:OFMakeRange(1, s.length - 1) - withString:identifier.name]; + completesize) == 0 && idx++ == completeidx) + [s replaceCharactersInRange: OFMakeRange( + 1, s.length - 1) + withString: identifier.name]; }]; completeidx++; if (completeidx >= idx) @@ -297,11 +298,11 @@ bool execfile(OFIRI *cfgfile) { OFString *command; @try { - command = [OFString stringWithContentsOfIRI:cfgfile]; + command = [OFString stringWithContentsOfIRI: cfgfile]; } @catch (OFOpenItemFailedException *e) { return false; } @catch (OFReadFailedException *e) { return false; } @@ -312,70 +313,72 @@ void exec(OFString *cfgfile) { if (!execfile([Cube.sharedInstance.userDataIRI - IRIByAppendingPathComponent:cfgfile]) && + IRIByAppendingPathComponent: cfgfile]) && !execfile([Cube.sharedInstance.gameDataIRI - IRIByAppendingPathComponent:cfgfile])) + IRIByAppendingPathComponent: cfgfile])) conoutf(@"could not read \"%@\"", cfgfile); } -COMMAND(exec, ARG_1STR, ^(OFString *cfgfile) { +COMMAND(exec, ARG_1STR, ^ (OFString *cfgfile) { exec(cfgfile); }) void writecfg() { OFStream *stream; @try { OFIRI *IRI = [Cube.sharedInstance.userDataIRI - IRIByAppendingPathComponent:@"config.cfg"]; - stream = [[OFIRIHandler handlerForIRI:IRI] openItemAtIRI:IRI - mode:@"w"]; + IRIByAppendingPathComponent: @"config.cfg"]; + stream = [[OFIRIHandler handlerForIRI: IRI] + openItemAtIRI: IRI + mode: @"w"]; } @catch (id e) { return; } - [stream writeString:@"// automatically written on exit, do not modify\n" - @"// delete this file to have defaults.cfg " - @"overwrite these settings\n" - @"// modify settings in game, or put settings in " - @"autoexec.cfg to override anything\n" - @"\n"]; + [stream writeString: + @"// automatically written on exit, do not modify\n" + @"// delete this file to have defaults.cfg overwrite these " + @"settings\n" + @"// modify settings in game, or put settings in autoexec.cfg to " + @"override anything\n" + @"\n"]; writeclientinfo(stream); - [stream writeString:@"\n"]; + [stream writeString: @"\n"]; - [Identifier.identifiers enumerateKeysAndObjectsUsingBlock:^( - OFString *name, __kindof Identifier *identifier, bool *stop) { - if (![identifier isKindOfClass:Variable.class] || + [Identifier.identifiers enumerateKeysAndObjectsUsingBlock: + ^ (OFString *name, __kindof Identifier *identifier, bool *stop) { + if (![identifier isKindOfClass: Variable.class] || ![identifier persisted]) return; - [stream writeFormat:@"%@ %d\n", identifier.name, - *[identifier storage]]; + [stream writeFormat: + @"%@ %d\n", identifier.name, *[identifier storage]]; }]; - [stream writeString:@"\n"]; + [stream writeString: @"\n"]; writebinds(stream); - [stream writeString:@"\n"]; + [stream writeString: @"\n"]; - [Identifier.identifiers enumerateKeysAndObjectsUsingBlock:^( - OFString *name, __kindof Identifier *identifier, bool *stop) { - if (![identifier isKindOfClass:Alias.class] || - [identifier.name hasPrefix:@"nextmap_"]) + [Identifier.identifiers enumerateKeysAndObjectsUsingBlock: + ^ (OFString *name, Alias *alias, bool *stop) { + if (![alias isKindOfClass: Alias.class] || + [alias.name hasPrefix: @"nextmap_"]) return; - [stream writeFormat:@"alias \"%@\" [%@]\n", identifier.name, - [identifier action]]; + [stream writeFormat: @"alias \"%@\" [%@]\n", + alias.name, alias.action]; }]; [stream close]; } -COMMAND(writecfg, ARG_NONE, ^{ +COMMAND(writecfg, ARG_NONE, ^ { writecfg(); }) // below the commands that implement a small imperative language. thanks to the // semantics of () and [] expressions, any control construct can be defined @@ -382,32 +385,32 @@ // trivially. void intset(OFString *name, int v) { - alias(name, [OFString stringWithFormat:@"%d", v]); + alias(name, [OFString stringWithFormat: @"%d", v]); } -COMMAND(if, ARG_3STR, ^(OFString *cond, OFString *thenp, OFString *elsep) { - execute((![cond hasPrefix:@"0"] ? thenp : elsep), true); +COMMAND(if, ARG_3STR, ^ (OFString *cond, OFString *thenp, OFString *elsep) { + execute((![cond hasPrefix: @"0"] ? thenp : elsep), true); }) -COMMAND(loop, ARG_2STR, ^(OFString *times, OFString *body) { +COMMAND(loop, ARG_2STR, ^ (OFString *times, OFString *body) { int t = times.cube_intValue; for (int i = 0; i < t; i++) { intset(@"i", i); execute(body, true); } }) -COMMAND(while, ARG_2STR, ^(OFString *cond, OFString *body) { +COMMAND(while, ARG_2STR, ^ (OFString *cond, OFString *body) { while (execute(cond, true)) execute(body, true); }) -COMMAND(onrelease, ARG_DWN1, ^(bool on, OFString *body) { +COMMAND(onrelease, ARG_DWN1, ^ (bool on, OFString *body) { if (!on) execute(body, true); }) void @@ -414,19 +417,19 @@ concat(OFString *s) { alias(@"s", s); } -COMMAND(concat, ARG_VARI, ^(OFString *s) { +COMMAND(concat, ARG_VARI, ^ (OFString *s) { concat(s); }) -COMMAND(concatword, ARG_VARI, ^(OFString *s) { - concat([s stringByReplacingOccurrencesOfString:@" " withString:@""]); +COMMAND(concatword, ARG_VARI, ^ (OFString *s) { + concat([s stringByReplacingOccurrencesOfString: @" " withString: @""]); }) -COMMAND(listlen, ARG_1EST, ^(OFString *a_) { +COMMAND(listlen, ARG_1EST, ^ (OFString *a_) { const char *a = a_.UTF8String; if (!*a) return 0; @@ -436,11 +439,11 @@ n++; return n + 1; }) -COMMAND(at, ARG_2STR, ^(OFString *s_, OFString *pos) { +COMMAND(at, ARG_2STR, ^ (OFString *s_, OFString *pos) { int n = pos.cube_intValue; char *copy __attribute__((__cleanup__(cleanup))) = strdup(s_.UTF8String); char *s = copy; for (int i = 0; i < n; i++) { @@ -449,48 +452,48 @@ } s[strcspn(s, " \0")] = 0; concat(@(s)); }) -COMMAND(+, ARG_2EXP, ^(int a, int b) { +COMMAND(+, ARG_2EXP, ^ (int a, int b) { return a + b; }) -COMMAND(*, ARG_2EXP, ^(int a, int b) { +COMMAND(*, ARG_2EXP, ^ (int a, int b) { return a * b; }) -COMMAND(-, ARG_2EXP, ^(int a, int b) { +COMMAND(-, ARG_2EXP, ^ (int a, int b) { return a - b; }) -COMMAND(div, ARG_2EXP, ^(int a, int b) { +COMMAND(div, ARG_2EXP, ^ (int a, int b) { return b ? a / b : 0; }) -COMMAND(mod, ARG_2EXP, ^(int a, int b) { +COMMAND(mod, ARG_2EXP, ^ (int a, int b) { return b ? a % b : 0; }) -COMMAND(=, ARG_2EXP, ^(int a, int b) { +COMMAND(=, ARG_2EXP, ^ (int a, int b) { return (int)(a == b); }) -COMMAND(<, ARG_2EXP, ^(int a, int b) { +COMMAND(<, ARG_2EXP, ^ (int a, int b) { return (int)(a < b); }) -COMMAND(>, ARG_2EXP, ^(int a, int b) { +COMMAND(>, ARG_2EXP, ^ (int a, int b) { return (int)(a > b); }) -COMMAND(strcmp, ARG_2EST, ^(OFString *a, OFString *b) { - return [a isEqual:b]; +COMMAND(strcmp, ARG_2EST, ^ (OFString *a, OFString *b) { + return [a isEqual: b]; }) -COMMAND(rnd, ARG_1EXP, ^(int a) { +COMMAND(rnd, ARG_1EXP, ^ (int a) { return (a > 0 ? rnd(a) : 0); }) -COMMAND(millis, ARG_1EXP, ^(int unused) { +COMMAND(millis, ARG_1EXP, ^ (int unused) { return lastmillis; }) Index: src/console.m ================================================================== --- src/console.m +++ src/console.m @@ -16,11 +16,11 @@ int conskip = 0; bool saycommandon = false; static OFMutableString *commandbuf; -COMMAND(conskip, ARG_1INT, ^(int n) { +COMMAND(conskip, ARG_1INT, ^ (int n) { conskip += n; if (conskip < 0) conskip = 0; }) @@ -36,20 +36,20 @@ } else text = [OFMutableString string]; if (highlight) // show line in a different colour, for chat etc. - [text appendString:@"\f"]; + [text appendString: @"\f"]; - [text appendString:sf]; + [text appendString: sf]; if (conlines == nil) conlines = [[OFMutableArray alloc] init]; - [conlines insertObject:[ConsoleLine lineWithText:text - outtime:lastmillis] - atIndex:0]; + [conlines insertObject: [ConsoleLine lineWithText: text + outtime: lastmillis] + atIndex: 0]; puts(text.UTF8String); #ifndef OF_WINDOWS fflush(stdout); #endif @@ -59,19 +59,19 @@ conoutf(OFConstantString *format, ...) { va_list arguments; va_start(arguments, format); - OFString *string = [[OFString alloc] initWithFormat:format - arguments:arguments]; + OFString *string = [[OFString alloc] initWithFormat: format + arguments: arguments]; va_end(arguments); int n = 0; while (string.length > WORDWRAP) { - conline([string substringToIndex:WORDWRAP], n++ != 0); - string = [string substringFromIndex:WORDWRAP]; + conline([string substringToIndex: WORDWRAP], n++ != 0); + string = [string substringFromIndex: WORDWRAP]; } conline(string, n != 0); } // render buffer taking into account time & scrolling @@ -100,23 +100,23 @@ // keymap is defined externally in keymap.cfg static OFMutableArray *keyMappings = nil; -COMMAND(keymap, ARG_3STR, ^(OFString *code, OFString *key, OFString *action) { +COMMAND(keymap, ARG_3STR, ^ (OFString *code, OFString *key, OFString *action) { if (keyMappings == nil) keyMappings = [[OFMutableArray alloc] init]; - KeyMapping *mapping = [KeyMapping mappingWithCode:code.cube_intValue - name:key]; + KeyMapping *mapping = [KeyMapping mappingWithCode: code.cube_intValue + name: key]; mapping.action = action; - [keyMappings addObject:mapping]; + [keyMappings addObject: mapping]; }) -COMMAND(bind, ARG_2STR, ^(OFString *key, OFString *action) { +COMMAND(bind, ARG_2STR, ^ (OFString *key, OFString *action) { for (KeyMapping *mapping in keyMappings) { - if ([mapping.name caseInsensitiveCompare:key] == + if ([mapping.name caseInsensitiveCompare: key] == OFOrderedSame) { mapping.action = action; return; } } @@ -141,29 +141,29 @@ init = @""; commandbuf = [init mutableCopy]; } -COMMAND(saycommand, ARG_VARI, ^(OFString *init) { +COMMAND(saycommand, ARG_VARI, ^ (OFString *init) { saycommand(init); }) -COMMAND(mapmsg, ARG_1STR, ^(OFString *s) { +COMMAND(mapmsg, ARG_1STR, ^ (OFString *s) { memset(hdr.maptitle, '\0', sizeof(hdr.maptitle)); strncpy(hdr.maptitle, s.UTF8String, 127); }) void pasteconsole() { - [commandbuf appendString:@(SDL_GetClipboardText())]; + [commandbuf appendString: @(SDL_GetClipboardText())]; } static OFMutableArray *vhistory; static int histpos = 0; -COMMAND(history, ARG_1INT, ^(int n) { +COMMAND(history, ARG_1INT, ^ (int n) { static bool rec = false; if (!rec && n >= 0 && n < vhistory.count) { rec = true; execute(vhistory[vhistory.count - n - 1], true); @@ -224,18 +224,18 @@ vhistory = [[OFMutableArray alloc] init]; if (vhistory.count == 0 || - ![vhistory.lastObject - isEqual:commandbuf]) { + ![vhistory.lastObject isEqual: + commandbuf]) { // cap this? - [vhistory addObject:[commandbuf - copy]]; + [vhistory addObject: + [commandbuf copy]]; } histpos = vhistory.count; - if ([commandbuf hasPrefix:@"/"]) + if ([commandbuf hasPrefix: @"/"]) execute(commandbuf, true); else toserver(commandbuf); } saycommand(NULL); @@ -259,11 +259,11 @@ void input(OFString *text) { if (saycommandon) - [commandbuf appendString:text]; + [commandbuf appendString: text]; } OFString * getcurcommand() { @@ -273,8 +273,8 @@ void writebinds(OFStream *stream) { for (KeyMapping *mapping in keyMappings) if (mapping.action.length > 0) - [stream writeFormat:@"bind \"%@\" [%@]\n", mapping.name, - mapping.action]; + [stream writeFormat: @"bind \"%@\" [%@]\n", + mapping.name, mapping.action]; } Index: src/cube.h ================================================================== --- src/cube.h +++ src/cube.h @@ -308,11 +308,11 @@ #define m_tarena (gamemode >= 10) #define m_teammode (gamemode & 1 && gamemode > 2) #define m_sp (gamemode < 0) #define m_dmsp (gamemode == -1) #define m_classicsp (gamemode == -2) -#define isteam(a, b) (m_teammode && [a isEqual:b]) +#define isteam(a, b) (m_teammode && [a isEqual: b]) // function signatures for script functions, see command.mm enum { ARG_1INT, ARG_2INT, Index: src/editing.m ================================================================== --- src/editing.m +++ src/editing.m @@ -18,25 +18,25 @@ struct block sel = { 0, 0, 0, 0 }; OF_CONSTRUCTOR() { - enqueueInit(^{ + enqueueInit(^ { static const struct { OFString *name; int *storage; } vars[4] = { { @"selx", &sel.x }, { @"sely", &sel.y }, { @"selxs", &sel.xs }, { @"selys", &sel.ys } }; for (size_t i = 0; i < 4; i++) { - Variable *variable = - [Variable variableWithName:vars[i].name - min:0 - max:4096 - storage:vars[i].storage - function:NULL - persisted:false]; + Variable *variable = [Variable + variableWithName: vars[i].name + min: 0 + max: 4096 + storage: vars[i].storage + function: NULL + persisted: false]; Identifier.identifiers[vars[i].name] = variable; } }); } @@ -91,11 +91,11 @@ Cube.sharedInstance.repeatsKeys = editmode; selset = false; editing = editmode; } -COMMAND(edittoggle, ARG_NONE, ^{ +COMMAND(edittoggle, ARG_NONE, ^ { toggleedit(); }) void correctsel() // ensures above invariant @@ -135,11 +135,11 @@ return; #define EDITMP \ if (noteditmode() || multiplayer()) \ return; -COMMAND(select, ARG_4INT, (^(int x, int y, int xs, int ys) { +COMMAND(select, ARG_4INT, (^ (int x, int y, int xs, int ys) { struct block s = { x, y, xs, ys }; sel = s; selh = 0; correctsel(); })) @@ -219,27 +219,27 @@ float h1 = sheight(s, s, z); float h2 = sheight(s, SWS(s, 1, 0, ssize), z); float h3 = sheight(s, SWS(s, 1, 1, ssize), z); float h4 = sheight(s, SWS(s, 0, 1, ssize), z); if (s->tag) - linestyle(GRIDW, [OFColor colorWithRed:1.0f - green:0.25f - blue:0.25f - alpha:1.0f]); + linestyle(GRIDW, [OFColor colorWithRed: 1.0f + green: 0.25f + blue: 0.25f + alpha: 1.0f]); else if (s->type == FHF || s->type == CHF) - linestyle(GRIDW, [OFColor colorWithRed:0.5f - green:1.0f - blue:0.5f - alpha:1.0f]); + linestyle(GRIDW, [OFColor colorWithRed: 0.5f + green: 1.0f + blue: 0.5f + alpha: 1.0f]); else linestyle(GRIDW, OFColor.gray); struct block b = { ix, iy, 1, 1 }; box(&b, h1, h2, h3, h4); - linestyle(GRID8, [OFColor colorWithRed:0.25f - green:0.25f - blue:1.0f - alpha:1.0f]); + linestyle(GRID8, [OFColor colorWithRed: 0.25f + green: 0.25f + blue: 1.0f + alpha: 1.0f]); if (!(ix & GRIDM)) line(ix, iy, h1, ix, iy + 1, h4); if (!(ix + 1 & GRIDM)) line(ix + 1, iy, h2, ix + 1, iy + 1, h3); if (!(iy & GRIDM)) @@ -260,14 +260,14 @@ dot(cx, cy, ih); ch = (int)ih; } if (selset) { - linestyle(GRIDS, [OFColor colorWithRed:1.0f - green:0.25f - blue:0.25f - alpha:1.0f]); + linestyle(GRIDS, [OFColor colorWithRed: 1.0f + green: 0.25f + blue: 0.25f + alpha: 1.0f]); box(&sel, (float)selh, (float)selh, (float)selh, (float)selh); } } static OFMutableData *undos; // unlimited undo @@ -276,33 +276,33 @@ void pruneundos(int maxremain) // bound memory { int t = 0; for (ssize_t i = (ssize_t)undos.count - 1; i >= 0; i--) { - struct block *undo = [undos mutableItemAtIndex:i]; + struct block *undo = [undos mutableItemAtIndex: i]; t += undo->xs * undo->ys * sizeof(struct sqr); if (t > maxremain) { OFFreeMemory(undo); - [undos removeItemAtIndex:i]; + [undos removeItemAtIndex: i]; } } } void makeundo() { if (undos == nil) undos = [[OFMutableData alloc] - initWithItemSize:sizeof(struct block *)]; + initWithItemSize: sizeof(struct block *)]; struct block *copy = blockcopy(&sel); - [undos addItem:©]; + [undos addItem: ©]; pruneundos(undomegs << 20); } -COMMAND(undo, ARG_NONE, ^{ +COMMAND(undo, ARG_NONE, ^ { EDITMP; if (undos.count == 0) { conoutf(@"nothing more to undo"); return; } @@ -312,20 +312,20 @@ OFFreeMemory(p); }) static struct block *copybuf = NULL; -COMMAND(copy, ARG_NONE, ^{ +COMMAND(copy, ARG_NONE, ^ { EDITSELMP; if (copybuf) OFFreeMemory(copybuf); copybuf = blockcopy(&sel); }) -COMMAND(paste, ARG_NONE, ^{ +COMMAND(paste, ARG_NONE, ^ { EDITMP; if (!copybuf) { conoutf(@"nothing to paste"); return; } @@ -399,11 +399,11 @@ bool isfloor = flr == 0; editheightxy(isfloor, amount, &sel); addmsg(1, 7, SV_EDITH, sel.x, sel.y, sel.xs, sel.ys, isfloor, amount); } -COMMAND(editheight, ARG_2INT, ^(int flr, int amount) { +COMMAND(editheight, ARG_2INT, ^ (int flr, int amount) { editheight(flr, amount); }) void edittexxy(int type, int t, const struct block *sel) @@ -422,11 +422,11 @@ s->utex = t; break; }); } -COMMAND(edittex, ARG_2INT, ^(int type, int dir) { +COMMAND(edittex, ARG_2INT, ^ (int type, int dir) { EDITSEL; if (type < 0 || type > 3) return; @@ -442,11 +442,11 @@ int t = lasttex = hdr.texlists[atype][i]; edittexxy(type, t, &sel); addmsg(1, 7, SV_EDITT, sel.x, sel.y, sel.xs, sel.ys, type, t); }) -COMMAND(replace, ARG_NONE, (^{ +COMMAND(replace, ARG_NONE, (^ { EDITSELMP; for (int x = 0; x < ssize; x++) { for (int y = 0; y < ssize; y++) { struct sqr *s = S(x, y); @@ -495,19 +495,19 @@ edittypexy(type, &sel); addmsg(1, 6, SV_EDITS, sel.x, sel.y, sel.xs, sel.ys, type); } -COMMAND(heightfield, ARG_1INT, ^(int t) { +COMMAND(heightfield, ARG_1INT, ^ (int t) { edittype(t == 0 ? FHF : CHF); }) -COMMAND(solid, ARG_1INT, ^(int t) { +COMMAND(solid, ARG_1INT, ^ (int t) { edittype(t == 0 ? SPACE : SOLID); }) -COMMAND(corner, ARG_NONE, ^{ +COMMAND(corner, ARG_NONE, ^ { edittype(CORNER); }) void editequalisexy(bool isfloor, const struct block *sel) @@ -527,11 +527,11 @@ if (s->floor >= s->ceil) s->floor = s->ceil - 1; }); } -COMMAND(equalize, ARG_1INT, ^(int flr) { +COMMAND(equalize, ARG_1INT, ^ (int flr) { bool isfloor = (flr == 0); EDITSEL; editequalisexy(isfloor, &sel); @@ -543,11 +543,11 @@ { loopselxy(s->vdelta = max(s->vdelta + delta, 0)); remipmore(sel, 0); } -COMMAND(vdelta, ARG_1INT, ^(int delta) { +COMMAND(vdelta, ARG_1INT, ^ (int delta) { EDITSEL; setvdeltaxy(delta, &sel); addmsg(1, 6, SV_EDITD, sel.x, sel.y, sel.xs, sel.ys, delta); }) @@ -554,11 +554,11 @@ #define MAXARCHVERT 50 int archverts[MAXARCHVERT][MAXARCHVERT]; bool archvinit = false; -COMMAND(archvertex, ARG_3INT, ^(int span, int vert, int delta) { +COMMAND(archvertex, ARG_3INT, ^ (int span, int vert, int delta) { if (!archvinit) { archvinit = true; for (int s = 0; s < MAXARCHVERT; s++) for (int v = 0; v < MAXARCHVERT; v++) archverts[s][v] = 0; @@ -566,11 +566,11 @@ if (span >= MAXARCHVERT || vert >= MAXARCHVERT || span < 0 || vert < 0) return; archverts[span][vert] = delta; }) -COMMAND(arch, ARG_2INT, ^(int sidedelta, int _a) { +COMMAND(arch, ARG_2INT, ^ (int sidedelta, int _a) { EDITSELMP; sel.xs++; sel.ys++; @@ -588,11 +588,11 @@ : (archverts[sel->ys - 1][y] + (x == 0 || x == sel->xs - 1 ? sidedelta : 0))); remipmore(sel, 0); }) -COMMAND(slope, ARG_2INT, ^(int xd, int yd) { +COMMAND(slope, ARG_2INT, ^ (int xd, int yd) { EDITSELMP; int off = 0; if (xd < 0) off -= xd * sel.xs; @@ -607,11 +607,11 @@ struct block *sel = sel_; loopselxy(s->vdelta = xd * x + yd * y + off); remipmore(sel, 0); }) -COMMAND(perlin, ARG_3INT, ^(int scale, int seed, int psize) { +COMMAND(perlin, ARG_3INT, ^ (int scale, int seed, int psize) { EDITSELMP; sel.xs++; sel.ys++; @@ -637,22 +637,22 @@ return; for (int i = 0; i < mipsize; i++) world[i].r = world[i].g = world[i].b = 176; }); -COMMAND(edittag, ARG_1INT, ^(int tag) { +COMMAND(edittag, ARG_1INT, ^ (int tag) { EDITSELMP; struct block *sel_ = &sel; // Ugly hack to make the macro work. struct block *sel = sel_; loopselxy(s->tag = tag); }) COMMAND(newent, ARG_5STR, - ^(OFString *what, OFString *a1, OFString *a2, OFString *a3, OFString *a4) { - EDITSEL; + ^ (OFString *what, OFString *a1, OFString *a2, OFString *a3, OFString *a4) { + EDITSEL; - newentity(sel.x, sel.y, (int)Player.player1.origin.z, what, - [a1 cube_intValueWithBase:0], [a2 cube_intValueWithBase:0], - [a3 cube_intValueWithBase:0], [a4 cube_intValueWithBase:0]); - }) + newentity(sel.x, sel.y, (int)Player.player1.origin.z, what, + [a1 cube_intValueWithBase: 0], [a2 cube_intValueWithBase: 0], + [a3 cube_intValueWithBase: 0], [a4 cube_intValueWithBase: 0]); +}) Index: src/entities.m ================================================================== --- src/entities.m +++ src/entities.m @@ -311,11 +311,11 @@ Player *player1 = Player.player1; if (editmode) return; - [ents enumerateObjectsUsingBlock:^(Entity *e, size_t i, bool *stop) { + [ents enumerateObjectsUsingBlock: ^ (Entity *e, size_t i, bool *stop) { if (e.type == NOTUSED) return; if (!e.spawned && e.type != TELEPORT && e.type != JUMPPAD) return; @@ -346,11 +346,11 @@ // puts items in network stream and also spawns them locally void putitems(unsigned char **p) { - [ents enumerateObjectsUsingBlock:^(Entity *e, size_t i, bool *stop) { + [ents enumerateObjectsUsingBlock: ^ (Entity *e, size_t i, bool *stop) { if ((e.type >= I_SHELLS && e.type <= I_QUAD) || e.type == CARROT) { putint(p, i); e.spawned = true; } Index: src/menus.m ================================================================== --- src/menus.m +++ src/menus.m @@ -19,14 +19,14 @@ [Player.player1 resetMovement]; if (vmenu == 1) menus[1].menusel = 0; } -COMMAND(showmenu, ARG_1STR, ^(OFString *name) { +COMMAND(showmenu, ARG_1STR, ^ (OFString *name) { int i = 0; for (Menu *menu in menus) { - if (i > 1 && [menu.name isEqual:name]) { + if (i > 1 && [menu.name isEqual: name]) { menuset(i); return; } i++; } @@ -52,11 +52,11 @@ refreshservers(); Menu *m = menus[vmenu]; OFString *title; if (vmenu > 1) - title = [OFString stringWithFormat:@"[ %@ menu ]", m.name]; + title = [OFString stringWithFormat: @"[ %@ menu ]", m.name]; else title = m.name; int mdisp = m.items.count; int w = 0; for (int i = 0; i < mdisp; i++) { @@ -91,34 +91,34 @@ newmenu(OFString *name) { if (menus == nil) menus = [[OFMutableArray alloc] init]; - [menus addObject:[Menu menuWithName:name]]; + [menus addObject: [Menu menuWithName: name]]; } -COMMAND(newmenu, ARG_1STR, ^(OFString *name) { +COMMAND(newmenu, ARG_1STR, ^ (OFString *name) { newmenu(name); }) void menumanual(int m, int n, OFString *text) { if (n == 0) [menus[m].items removeAllObjects]; - MenuItem *item = [MenuItem itemWithText:text action:@""]; - [menus[m].items addObject:item]; + MenuItem *item = [MenuItem itemWithText: text action: @""]; + [menus[m].items addObject: item]; } -COMMAND(menuitem, ARG_2STR, ^(OFString *text, OFString *action) { +COMMAND(menuitem, ARG_2STR, ^ (OFString *text, OFString *action) { Menu *menu = menus.lastObject; - MenuItem *item = - [MenuItem itemWithText:text - action:(action.length > 0 ? action : text)]; - [menu.items addObject:item]; + MenuItem *item = [MenuItem + itemWithText: text + action: (action.length > 0 ? action : text)]; + [menu.items addObject: item]; }) bool menukey(int code, bool isdown) { @@ -153,14 +153,14 @@ connects(getservername(menusel)); if (menuStack == nil) menuStack = [[OFMutableArray alloc] init]; - [menuStack addObject:@(vmenu)]; + [menuStack addObject: @(vmenu)]; menuset(-1); execute(action, true); } } return true; } Index: src/physics.m ================================================================== --- src/physics.m +++ src/physics.m @@ -30,11 +30,11 @@ } else if (o.origin.z + o.aboveEye > *lo) *lo = o.origin.z + o.aboveEye + 1; if (fabs(o.origin.z - d.origin.z) < o.aboveEye + d.eyeHeight) return false; - if ([d isKindOfClass:Monster.class]) + if ([d isKindOfClass: Monster.class]) return false; // hack *headspace = d.origin.z - o.origin.z - o.aboveEye - d.eyeHeight; if (*headspace < 0) *headspace = 10; @@ -106,14 +106,12 @@ const int y1 = fy1; const int x2 = fx2; const int y2 = fy2; float hi = 127, lo = -128; // big monsters are afraid of heights, unless angry :) - float minfloor = - ([d isKindOfClass:Monster.class] && !spawn && d.health > 100 - ? d.origin.z - d.eyeHeight - 4.5f - : -1000.0f); + float minfloor = ([d isKindOfClass: Monster.class] && !spawn && + d.health > 100 ? d.origin.z - d.eyeHeight - 4.5f : -1000.0f); for (int x = x1; x <= x2; x++) { for (int y = y1; y <= y2; y++) { // collide with map if (OUTBORD(x, y)) @@ -326,20 +324,20 @@ pl.velocity = OFMakeVector3D( pl.velocity.x / 8, pl.velocity.y / 8, pl.velocity.z); if (local) playsoundc(S_JUMP); - else if ([pl isKindOfClass:Monster.class]) { + else if ([pl isKindOfClass: Monster.class]) { OFVector3D loc = pl.origin; playsound(S_JUMP, &loc); } } else if (pl.timeInAir > 800) { // if we land after long time must have been a // high jump, make thud sound if (local) playsoundc(S_LAND); - else if ([pl isKindOfClass:Monster.class]) { + else if ([pl isKindOfClass: Monster.class]) { OFVector3D loc = pl.origin; playsound(S_LAND, &loc); } } Index: src/rendercubes.m ================================================================== --- src/rendercubes.m +++ src/rendercubes.m @@ -62,11 +62,11 @@ int oh, oy, ox, ogltex; // the o* vars are used by the stripification int ol3r, ol3g, ol3b, ol4r, ol4g, ol4b; int firstindex; bool showm = false; -COMMAND(showmip, ARG_NONE, ^{ +COMMAND(showmip, ARG_NONE, ^ { showm = !showm; }) void mipstats(int a, int b, int c) Index: src/renderextras.m ================================================================== --- src/renderextras.m +++ src/renderextras.m @@ -58,14 +58,14 @@ glDepthMask(GL_FALSE); glDisable(GL_TEXTURE_2D); glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); glBegin(GL_QUADS); if (border) - [[OFColor colorWithRed:0.5f - green:0.3f - blue:0.4f - alpha:1.0f] cube_setAsGLColor]; + [[OFColor colorWithRed: 0.5f + green: 0.3f + blue: 0.4f + alpha: 1.0f] cube_setAsGLColor]; else [OFColor.white cube_setAsGLColor]; glVertex2i(x1, y1); glVertex2i(x2, y1); glVertex2i(x2, y2); @@ -72,14 +72,14 @@ glVertex2i(x1, y2); glEnd(); glDisable(GL_BLEND); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glBegin(GL_POLYGON); - [[OFColor colorWithRed:0.2f - green:0.7f - blue:0.4f - alpha:1.0f] cube_setAsGLColor]; + [[OFColor colorWithRed: 0.2f + green: 0.7f + blue: 0.4f + alpha: 1.0f] cube_setAsGLColor]; glVertex2i(x1, y1); glVertex2i(x2, y1); glVertex2i(x2, y2); glVertex2i(x1, y2); glEnd(); @@ -131,14 +131,14 @@ glBindTexture(GL_TEXTURE_2D, 4); for (struct sphere *p, **pp = &slist; (p = *pp) != NULL;) { glPushMatrix(); float size = p->size / p->max; - [[OFColor colorWithRed:1.0f - green:1.0f - blue:1.0f - alpha:1.0f - size] cube_setAsGLColor]; + [[OFColor colorWithRed: 1.0f + green: 1.0f + blue: 1.0f + alpha: 1.0f - size] cube_setAsGLColor]; glTranslatef(p->o.x, p->o.z, p->o.y); glRotatef(lastmillis / 5.0f, 1, 1, 1); glScalef(p->size, p->size, p->size); glCallList(1); glScalef(0.8f, 0.8f, 0.8f); @@ -205,38 +205,37 @@ int e = closestent(); if (e >= 0) { Entity *c = ents[e]; closeent = - [OFString stringWithFormat:@"closest entity = %@ (%d, %d, " - @"%d, %d), selection = (%d, %d)", + [OFString stringWithFormat: + @"closest entity = %@ (%d, %d, %d, %d), " + @"selection = (%d, %d)", entnames[c.type], c.attr1, c.attr2, c.attr3, c.attr4, getvar(@"selxs"), getvar(@"selys")]; } } -COMMAND(loadsky, ARG_1STR, (^(OFString *basename) { +COMMAND(loadsky, ARG_1STR, (^ (OFString *basename) { static OFString *lastsky = @""; - basename = [basename stringByReplacingOccurrencesOfString:@"\\" - withString:@"/"]; + basename = [basename stringByReplacingOccurrencesOfString: @"\\" + withString: @"/"]; - if ([lastsky isEqual:basename]) + if ([lastsky isEqual: basename]) return; static const OFString *side[] = { @"ft", @"bk", @"lf", @"rt", @"dn", @"up" }; int texnum = 14; for (int i = 0; i < 6; i++) { - OFString *path = [OFString - stringWithFormat:@"packages/%@_%@.jpg", basename, side[i]]; + OFString *path = [OFString stringWithFormat: + @"packages/%@_%@.jpg", basename, side[i]]; int xs, ys; - if (!installtex(texnum + i, - [Cube.sharedInstance.gameDataIRI - IRIByAppendingPathComponent:path], - &xs, &ys, true)) + if (!installtex(texnum + i, [Cube.sharedInstance.gameDataIRI + IRIByAppendingPathComponent: path], &xs, &ys, true)) conoutf(@"could not load sky textures"); } lastsky = basename; })) @@ -359,19 +358,19 @@ if (dblend || underwater) { glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); glBegin(GL_QUADS); if (dblend) - [[OFColor colorWithRed:0.0f - green:0.9f - blue:0.9f - alpha:1.0f] cube_setAsGLColor]; + [[OFColor colorWithRed: 0.0f + green: 0.9f + blue: 0.9f + alpha: 1.0f] cube_setAsGLColor]; else - [[OFColor colorWithRed:0.9f - green:0.5f - blue:0.0f - alpha:1.0f] cube_setAsGLColor]; + [[OFColor colorWithRed: 0.9f + green: 0.5f + blue: 0.0f + alpha: 1.0f] cube_setAsGLColor]; glVertex2i(0, 0); glVertex2i(VIRTW, 0); glVertex2i(VIRTW, VIRTH); glVertex2i(0, VIRTH); glEnd(); @@ -402,14 +401,15 @@ if (player1.gunWait) [OFColor.gray cube_setAsGLColor]; else if (player1.health <= 25) [OFColor.red cube_setAsGLColor]; else if (player1.health <= 50) - [[OFColor colorWithRed:1.0f - green:0.5f - blue:0.0f - alpha:1.0f] cube_setAsGLColor]; + [[OFColor colorWithRed: 1.0f + green: 0.5f + blue: 0.0f + alpha: 1.0f] + cube_setAsGLColor]; } float chsize = (float)crosshairsize; glTexCoord2d(0.0, 0.0); glVertex2f(VIRTW / 2 - chsize, VIRTH / 2 - chsize); glTexCoord2d(1.0, 0.0); Index: src/rendergl.m ================================================================== --- src/rendergl.m +++ src/rendergl.m @@ -188,23 +188,23 @@ mapping[i][j] = 0; } int curtexnum = 0; -COMMAND(texturereset, ARG_NONE, ^{ +COMMAND(texturereset, ARG_NONE, ^ { curtexnum = 0; }) -COMMAND(texture, ARG_2STR, (^(OFString *aframe, OFString *name) { +COMMAND(texture, ARG_2STR, (^ (OFString *aframe, OFString *name) { int num = curtexnum++, frame = aframe.cube_intValue; if (num < 0 || num >= 256 || frame < 0 || frame >= MAXFRAMES) return; mapping[num][frame] = 1; - mapname[num][frame] = [name stringByReplacingOccurrencesOfString:@"\\" - withString:@"/"]; + mapname[num][frame] = [name stringByReplacingOccurrencesOfString: @"\\" + withString: @"/"]; })) int lookuptexture(int tex, int *xs, int *ys) { @@ -221,11 +221,11 @@ if (tid == 0) return 1; // crosshair :) // lazily happens once per "texture" command, basically for (int i = 0; i < curtex; i++) { - if ([mapname[tex][frame] isEqual:texname[i]]) { + if ([mapname[tex][frame] isEqual: texname[i]]) { mapping[tex][frame] = tid = i + FIRSTTEX; *xs = texx[i]; *ys = texy[i]; return tid; } @@ -235,17 +235,15 @@ fatal(@"loaded too many textures"); int tnum = curtex + FIRSTTEX; texname[curtex] = mapname[tex][frame]; - OFString *path = - [OFString stringWithFormat:@"packages/%@", texname[curtex]]; + OFString *path = [OFString stringWithFormat: @"packages/%@", + texname[curtex]]; - if (installtex(tnum, - [Cube.sharedInstance.gameDataIRI - IRIByAppendingPathComponent:path], - xs, ys, false)) { + if (installtex(tnum, [Cube.sharedInstance.gameDataIRI + IRIByAppendingPathComponent: path], xs, ys, false)) { mapping[tex][frame] = tnum; texx[curtex] = *xs; texy[curtex] = *ys; curtex++; return tnum; @@ -320,14 +318,14 @@ void addstrip(int tex, int start, int n) { if (strips == nil) strips = [[OFMutableData alloc] - initWithItemSize:sizeof(struct strip)]; + initWithItemSize: sizeof(struct strip)]; struct strip s = { .tex = tex, .start = start, .num = n }; - [strips addItem:&s]; + [strips addItem: &s]; } #undef gamma VARFP(gamma, 30, 100, 300, { Index: src/rendermd2.m ================================================================== --- src/rendermd2.m +++ src/rendermd2.m @@ -15,20 +15,22 @@ void delayedload(MD2 *m) { if (!m.loaded) { - OFString *path = [OFString - stringWithFormat:@"packages/models/%@", m.loadname]; + OFString *path = [OFString stringWithFormat: + @"packages/models/%@", m.loadname]; OFIRI *baseIRI = [Cube.sharedInstance.gameDataIRI - IRIByAppendingPathComponent:path]; + IRIByAppendingPathComponent: path]; - OFIRI *IRI1 = [baseIRI IRIByAppendingPathComponent:@"tris.md2"]; - if (![m loadWithIRI:IRI1]) + OFIRI *IRI1 = [baseIRI + IRIByAppendingPathComponent: @"tris.md2"]; + if (![m loadWithIRI: IRI1]) fatal(@"loadmodel: %@", IRI1.string); - OFIRI *IRI2 = [baseIRI IRIByAppendingPathComponent:@"skin.jpg"]; + OFIRI *IRI2 = [baseIRI + IRIByAppendingPathComponent: @"skin.jpg"]; int xs, ys; installtex(FIRSTMDL + m.mdlnum, IRI2, &xs, &ys, false); m.loaded = true; } } @@ -42,11 +44,11 @@ if (m != nil) return m; m = [MD2 md2]; m.mdlnum = modelnum++; - m.mmi = [MapModelInfo infoWithRad:2 h:2 zoff:0 snap:0 name:@""]; + m.mmi = [MapModelInfo infoWithRad: 2 h: 2 zoff: 0 snap: 0 name: @""]; m.loadname = name; if (mdllookup == nil) mdllookup = [[OFMutableDictionary alloc] init]; @@ -53,29 +55,27 @@ mdllookup[name] = m; return m; } -COMMAND(mapmodel, ARG_5STR, - ^(OFString *rad, OFString *h, OFString *zoff, OFString *snap, - OFString *name) { - MD2 *m = - loadmodel([name stringByReplacingOccurrencesOfString:@"\\" - withString:@"/"]); - m.mmi = [MapModelInfo infoWithRad:rad.cube_intValue - h:h.cube_intValue - zoff:zoff.cube_intValue - snap:snap.cube_intValue - name:m.loadname]; - - if (mapmodels == nil) - mapmodels = [[OFMutableArray alloc] init]; - - [mapmodels addObject:m]; - }) - -COMMAND(mapmodelreset, ARG_NONE, ^{ +COMMAND(mapmodel, ARG_5STR, ^ (OFString *rad, OFString *h, OFString *zoff, + OFString *snap, OFString *name) { + MD2 *m = loadmodel([name stringByReplacingOccurrencesOfString: @"\\" + withString: @"/"]); + m.mmi = [MapModelInfo infoWithRad: rad.cube_intValue + h: h.cube_intValue + zoff: zoff.cube_intValue + snap: snap.cube_intValue + name: m.loadname]; + + if (mapmodels == nil) + mapmodels = [[OFMutableArray alloc] init]; + + [mapmodels addObject: m]; +}) + +COMMAND(mapmodelreset, ARG_NONE, ^ { [mapmodels removeAllObjects]; }) MapModelInfo * getmminfo(int i) @@ -100,37 +100,37 @@ glBindTexture(GL_TEXTURE_2D, tex ? lookuptexture(tex, &xs, &ys) : FIRSTMDL + m.mdlnum); int ix = (int)position.x; int iy = (int)position.z; - OFColor *light = [OFColor colorWithRed:1 green:1 blue:1 alpha:1]; + OFColor *light = OFColor.white; if (!OUTBORD(ix, iy)) { struct sqr *s = S(ix, iy); float ll = 256.0f; // 0.96f; float of = 0.0f; // 0.1f; - light = [OFColor colorWithRed:s->r / ll + of - green:s->g / ll + of - blue:s->b / ll + of - alpha:1]; + light = [OFColor colorWithRed: s->r / ll + of + green: s->g / ll + of + blue: s->b / ll + of + alpha: 1]; } if (teammate) { float red, green, blue; - [light getRed:&red green:&green blue:&blue alpha:NULL]; - light = [OFColor colorWithRed:red * 0.6f - green:green * 0.7f - blue:blue * 1.2f - alpha:1]; - } - - [m renderWithLight:light - frame:frame - range:range - position:position - yaw:yaw - pitch:pitch - scale:scale - speed:speed - snap:snap - basetime:basetime]; + [light getRed: &red green: &green blue: &blue alpha: NULL]; + light = [OFColor colorWithRed: red * 0.6f + green: green * 0.7f + blue: blue * 1.2f + alpha: 1]; + } + + [m renderWithLight: light + frame: frame + range: range + position: position + yaw: yaw + pitch: pitch + scale: scale + speed: speed + snap: snap + basetime: basetime]; } Index: src/rendertext.m ================================================================== --- src/rendertext.m +++ src/rendertext.m @@ -137,12 +137,12 @@ void draw_textf(OFConstantString *format, int left, int top, int gl_num, ...) { va_list arguments; va_start(arguments, gl_num); - OFString *str = [[OFString alloc] initWithFormat:format - arguments:arguments]; + OFString *str = [[OFString alloc] initWithFormat: format + arguments: arguments]; va_end(arguments); draw_text(str, left, top, gl_num); } void @@ -168,14 +168,14 @@ x = (x - left + PIXELTAB) / PIXELTAB * PIXELTAB + left; continue; } if (c == '\f') { - [[OFColor colorWithRed:0.25f - green:1.0f - blue:0.5f - alpha:1.0f] cube_setAsGLColor]; + [[OFColor colorWithRed: 0.25f + green: 1.0f + blue: 0.5f + alpha: 1.0f] cube_setAsGLColor]; continue; } if (c == ' ') { x += FONTH / 2; Index: src/savegamedemo.m ================================================================== --- src/savegamedemo.m +++ src/savegamedemo.m @@ -95,12 +95,11 @@ void savestate(OFIRI *IRI) { stop(); f = gzopen([IRI.fileSystemRepresentation - cStringWithEncoding:OFLocale.encoding], - "wb9"); + cStringWithEncoding: OFLocale.encoding], "wb9"); if (!f) { conoutf(@"could not write %@", IRI.string); return; } gzwrite(f, (void *)"CUBESAVE", 8); @@ -129,19 +128,20 @@ data = [player dataBySerializing]; gzwrite(f, data.items, data.count); } } -COMMAND(savegame, ARG_1STR, (^(OFString *name) { +COMMAND(savegame, ARG_1STR, (^ (OFString *name) { if (!m_classicsp) { conoutf(@"can only save classic sp games"); return; } - OFString *path = [OFString stringWithFormat:@"savegames/%@.csgz", name]; - OFIRI *IRI = - [Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; + OFString *path = [OFString stringWithFormat: + @"savegames/%@.csgz", name]; + OFIRI *IRI = [Cube.sharedInstance.userDataIRI + IRIByAppendingPathComponent: path]; savestate(IRI); stop(); conoutf(@"wrote %@", IRI.string); })) @@ -150,12 +150,11 @@ { stop(); if (multiplayer()) return; f = gzopen([IRI.fileSystemRepresentation - cStringWithEncoding:OFLocale.encoding], - "rb9"); + cStringWithEncoding: OFLocale.encoding], "rb9"); if (!f) { conoutf(@"could not open %@", IRI.string); return; } @@ -181,14 +180,15 @@ conoutf(@"aborting: savegame/demo from a different version of " @"cube or cpu architecture"); stop(); } -COMMAND(loadgame, ARG_1STR, (^(OFString *name) { - OFString *path = [OFString stringWithFormat:@"savegames/%@.csgz", name]; - OFIRI *IRI = - [Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; +COMMAND(loadgame, ARG_1STR, (^ (OFString *name) { + OFString *path = [OFString stringWithFormat: + @"savegames/%@.csgz", name]; + OFIRI *IRI = [Cube.sharedInstance.userDataIRI + IRIByAppendingPathComponent: path]; loadstate(IRI); })) void loadgameout() @@ -215,24 +215,24 @@ } restoreserverstate(ents); OFMutableData *data = - [OFMutableData dataWithCapacity:DynamicEntity.serializedSize]; - [data increaseCountBy:DynamicEntity.serializedSize]; + [OFMutableData dataWithCapacity: DynamicEntity.serializedSize]; + [data increaseCountBy: DynamicEntity.serializedSize]; gzread(f, data.mutableItems, data.count); - [Player.player1 setFromSerializedData:data]; + [Player.player1 setFromSerializedData: data]; Player.player1.lastAction = lastmillis; int nmonsters = gzgeti(); OFArray *monsters = Monster.monsters; if (nmonsters != monsters.count) return loadgameout(); for (Monster *monster in monsters) { gzread(f, data.mutableItems, data.count); - [monster setFromSerializedData:data]; + [monster setFromSerializedData: data]; // lazy, could save id of enemy instead monster.enemy = Player.player1; // also lazy, but no real noticable effect on game monster.lastAction = monster.trigger = lastmillis + 500; if (monster.state == CS_DEAD) @@ -244,11 +244,11 @@ for (int i = 0; i < nplayers; i++) { if (!gzget()) { Player *d = getclient(i); assert(d); gzread(f, data.mutableItems, data.count); - [d setFromSerializedData:data]; + [d setFromSerializedData: data]; } } conoutf(@"savegame restored"); if (demoloading) @@ -262,23 +262,23 @@ int starttime = 0; int playbacktime = 0; int ddamage, bdamage; OFVector3D dorig; -COMMAND(record, ARG_1STR, (^(OFString *name) { +COMMAND(record, ARG_1STR, (^ (OFString *name) { if (m_sp) { conoutf(@"cannot record singleplayer games"); return; } int cn = getclientnum(); if (cn < 0) return; - OFString *path = [OFString stringWithFormat:@"demos/%@.cdgz", name]; - OFIRI *IRI = - [Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; + OFString *path = [OFString stringWithFormat: @"demos/%@.cdgz", name]; + OFIRI *IRI = [Cube.sharedInstance.userDataIRI + IRIByAppendingPathComponent: path]; savestate(IRI); gzputi(cn); conoutf(@"started recording demo to %@", IRI.string); demorecording = true; starttime = lastmillis; @@ -331,14 +331,14 @@ // FIXME: add all other client state which is not send through // the network } } -COMMAND(demo, ARG_1STR, (^(OFString *name) { - OFString *path = [OFString stringWithFormat:@"demos/%@.cdgz", name]; - OFIRI *IRI = - [Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; +COMMAND(demo, ARG_1STR, (^ (OFString *name) { + OFString *path = [OFString stringWithFormat: @"demos/%@.cdgz", name]; + OFIRI *IRI = [Cube.sharedInstance.userDataIRI + IRIByAppendingPathComponent: path]; loadstate(IRI); demoloading = true; })) void @@ -460,14 +460,14 @@ d.lastUpdate = playbacktime; if (playerhistory == nil) playerhistory = [[OFMutableArray alloc] init]; - [playerhistory addObject:d]; + [playerhistory addObject: d]; if (playerhistory.count > 20) - [playerhistory removeObjectAtIndex:0]; + [playerhistory removeObjectAtIndex: 0]; } readdemotime(); } @@ -540,12 +540,12 @@ } } // if(player1->state!=CS_DEAD) showscores(false); } -COMMAND(stop, ARG_NONE, ^{ +COMMAND(stop, ARG_NONE, ^ { if (demoplayback) stopreset(); else stop(); conoutf(@"demo stopped"); }) Index: src/server.m ================================================================== --- src/server.m +++ src/server.m @@ -22,12 +22,12 @@ // hack: called from savegame code, only works in SP void restoreserverstate(OFArray *ents) { - [sents enumerateObjectsUsingBlock:^( - ServerEntity *e, size_t i, bool *stop) { + [sents enumerateObjectsUsingBlock: + ^ (ServerEntity *e, size_t i, bool *stop) { e.spawned = ents[i].spawned; e.spawnsecs = 0; }]; } @@ -99,12 +99,12 @@ } void disconnect_client(int n, OFString *reason) { - [OFStdOut writeFormat:@"disconnecting client (%@) [%@]\n", - clients[n].hostname, reason]; + [OFStdOut writeFormat: @"disconnecting client (%@) [%@]\n", + clients[n].hostname, reason]; enet_peer_disconnect(clients[n].peer); clients[n].type = ST_EMPTY; send2(true, -1, SV_CDIS, n); } @@ -144,11 +144,11 @@ int yes = 0, no = 0; for (Client *client in clients) { if (client.type != ST_EMPTY) { if (client.mapvote.length > 0) { - if ([client.mapvote isEqual:map] && + if ([client.mapvote isEqual: map] && client.modevote == reqmode) yes++; else no++; } else @@ -157,12 +157,12 @@ } if (yes == 1 && no == 0) return true; // single player - OFString *msg = [OFString - stringWithFormat:@"%@ suggests %@ on map %@ (set map to vote)", + OFString *msg = [OFString stringWithFormat: + @"%@ suggests %@ on map %@ (set map to vote)", clients[sender].name, modestr(reqmode), map]; sendservmsg(msg); if (yes / (float)(yes + no) <= 0.5f) return false; @@ -225,12 +225,12 @@ case SV_ITEMLIST: { int n; while ((n = getint(&p)) != -1) if (notgotitems) { while (sents.count <= n) - [sents addObject:[ServerEntity - entity]]; + [sents addObject: + [ServerEntity entity]]; sents[n].spawned = true; } notgotitems = false; break; } @@ -312,12 +312,12 @@ if (smapname.length > 0) { putint(&p, SV_MAPCHANGE); sendstring(smapname, &p); putint(&p, mode); putint(&p, SV_ITEMLIST); - [sents enumerateObjectsUsingBlock:^( - ServerEntity *e, size_t i, bool *stop) { + [sents enumerateObjectsUsingBlock: + ^ (ServerEntity *e, size_t i, bool *stop) { if (e.spawned) putint(&p, i); }]; putint(&p, -1); } @@ -354,11 +354,11 @@ Client *client = [Client client]; if (clients == nil) clients = [[OFMutableArray alloc] init]; - [clients addObject:client]; + [clients addObject: client]; return client; } void @@ -403,12 +403,12 @@ serverslice(int seconds, unsigned int timeout) // main server update, called from cube main loop in // sp, or dedicated server loop { // spawn entities when timer reached - [sents enumerateObjectsUsingBlock:^( - ServerEntity *e, size_t i, bool *stop) { + [sents enumerateObjectsUsingBlock: + ^ (ServerEntity *e, size_t i, bool *stop) { if (e.spawnsecs && (e.spawnsecs -= seconds - lastsec) <= 0) { e.spawnsecs = 0; e.spawned = true; send2(true, -1, SV_ITEMSPAWN, i); } @@ -419,12 +419,12 @@ if ((mode > 1 || (mode == 0 && nonlocalclients)) && seconds > mapend - minremain * 60) checkintermission(); if (interm && seconds > interm) { interm = 0; - [clients enumerateObjectsUsingBlock:^( - Client *client, size_t i, bool *stop) { + [clients enumerateObjectsUsingBlock: + ^ (Client *client, size_t i, bool *stop) { if (client.type != ST_EMPTY) { // ask a client to trigger map reload send2(true, i, SV_MAPRELOAD, 0); mapreload = true; *stop = true; @@ -473,12 +473,12 @@ char hn[1024]; c.hostname = (enet_address_get_host( &c.peer->address, hn, sizeof(hn)) == 0 ? @(hn) : @"localhost"); - [OFStdOut - writeFormat:@"client connected (%@)\n", c.hostname]; + [OFStdOut writeFormat: @"client connected (%@)\n", + c.hostname]; send_welcome(lastconnect = clients.count - 1); break; } case ENET_EVENT_TYPE_RECEIVE: brec += event.packet->dataLength; @@ -487,11 +487,12 @@ enet_packet_destroy(event.packet); break; case ENET_EVENT_TYPE_DISCONNECT: if ((intptr_t)event.peer->data < 0) break; - [OFStdOut writeFormat:@"disconnected client (%@)\n", + [OFStdOut writeFormat: + @"disconnected client (%@)\n", clients[(size_t)event.peer->data].hostname]; clients[(size_t)event.peer->data].type = ST_EMPTY; send2(true, -1, SV_CDIS, (intptr_t)event.peer->data); event.peer->data = (void *)-1; break; Index: src/serverbrowser.m ================================================================== --- src/serverbrowser.m +++ src/serverbrowser.m @@ -25,11 +25,11 @@ resolversem = SDL_CreateSemaphore(0); while (threads > 0) { ResolverThread *rt = [ResolverThread thread]; rt.name = @"resolverthread"; - [resolverthreads addObject:rt]; + [resolverthreads addObject: rt]; [rt start]; --threads; } } @@ -46,11 +46,11 @@ resolverthreads[i] = rt; [rt start]; } else - [resolverthreads removeObjectAtIndex:i]; + [resolverthreads removeObjectAtIndex: i]; } } void resolverclear() @@ -69,11 +69,11 @@ void resolverquery(OFString *name) { @synchronized(ResolverThread.class) { - [resolverqueries addObject:name]; + [resolverqueries addObject: name]; SDL_SemPost(resolversem); } } bool @@ -116,20 +116,20 @@ void addserver(OFString *servername) { for (ServerInfo *si in servers) - if ([si.name isEqual:servername]) + if ([si.name isEqual: servername]) return; if (servers == nil) servers = [[OFMutableArray alloc] init]; - [servers addObject:[ServerInfo infoWithName:servername]]; + [servers addObject: [ServerInfo infoWithName: servername]]; } -COMMAND(addserver, ARG_1STR, ^(OFString *servername) { +COMMAND(addserver, ARG_1STR, ^ (OFString *servername) { addserver(servername); }) void pingservers() @@ -161,11 +161,11 @@ while (resolvercheck(&name, &addr)) { if (addr.host == ENET_HOST_ANY) continue; for (ServerInfo *si in servers) { - if ([name isEqual:si.name]) { + if ([name isEqual: si.name]) { si.address = addr; addr.host = ENET_HOST_ANY; break; } } @@ -215,33 +215,32 @@ if (lastmillis - lastinfo >= 5000) pingservers(); [servers sort]; __block int maxmenu = 16; - [servers enumerateObjectsUsingBlock:^( - ServerInfo *si, size_t i, bool *stop) { + [servers enumerateObjectsUsingBlock: + ^ (ServerInfo *si, size_t i, bool *stop) { if (si.address.host != ENET_HOST_ANY && si.ping != 9999) { if (si.protocol != PROTOCOL_VERSION) si.full = [OFString stringWithFormat: - @"%@ [different cube protocol]", - si.name]; + @"%@ [different cube protocol]", si.name]; else - si.full = [OFString - stringWithFormat:@"%d\t%d\t%@, %@: %@ %@", + si.full = [OFString stringWithFormat: + @"%d\t%d\t%@, %@: %@ %@", si.ping, si.numplayers, si.map.length > 0 ? si.map : @"[unknown]", modestr(si.mode), si.name, si.sdesc]; } else si.full = [OFString stringWithFormat: - (si.address.host != ENET_HOST_ANY - ? @"%@ [waiting for server response]" - : @"%@ [unknown host]\t"), + (si.address.host != ENET_HOST_ANY + ? @"%@ [waiting for server response]" + : @"%@ [unknown host]\t"), si.name]; // cut off too long server descriptions if (si.full.length > 50) - si.full = [si.full substringToIndex:50]; + si.full = [si.full substringToIndex: 50]; menumanual(1, i, si.full); if (!--maxmenu) return; @@ -263,15 +262,15 @@ refreshservers(); menuset(1); } -COMMAND(servermenu, ARG_NONE, ^{ +COMMAND(servermenu, ARG_NONE, ^ { servermenu(); }) -COMMAND(updatefrommaster, ARG_NONE, ^{ +COMMAND(updatefrommaster, ARG_NONE, ^ { const int MAXUPD = 32000; unsigned char buf[MAXUPD]; unsigned char *reply = retrieveservers(buf, MAXUPD); if (!*reply || strstr((char *)reply, "") || strstr((char *)reply, "")) Index: src/serverms.m ================================================================== --- src/serverms.m +++ src/serverms.m @@ -7,11 +7,11 @@ static void httpgetsend(ENetAddress *ad, OFString *hostname, OFString *req, OFString *ref, OFString *agent) { if (ad->host == ENET_HOST_ANY) { - [OFStdOut writeFormat:@"looking up %@...\n", hostname]; + [OFStdOut writeFormat: @"looking up %@...\n", hostname]; enet_address_set_host(ad, hostname.UTF8String); if (ad->host == ENET_HOST_ANY) return; } if (mssock != ENET_SOCKET_NULL) @@ -24,18 +24,19 @@ if (enet_socket_connect(mssock, ad) < 0) { printf("could not connect\n"); return; } ENetBuffer buf; - OFString *httpget = [OFString stringWithFormat:@"GET %@ HTTP/1.0\n" - @"Host: %@\n" - @"Referer: %@\n" - @"User-Agent: %@\n\n", + OFString *httpget = [OFString stringWithFormat: + @"GET %@ HTTP/1.0\n" + @"Host: %@\n" + @"Referer: %@\n" + @"User-Agent: %@\n\n", req, hostname, ref, agent]; buf.data = (void *)httpget.UTF8String; buf.dataLength = httpget.UTF8StringLength; - [OFStdOut writeFormat:@"sending request to %@...\n", hostname]; + [OFStdOut writeFormat: @"sending request to %@...\n", hostname]; enet_socket_send(mssock, NULL, &buf, 1); } static void httpgetrecieve(ENetBuffer *buf) @@ -75,12 +76,12 @@ static void updatemasterserver(int seconds) { // send alive signal to masterserver every hour of uptime if (seconds > updmaster) { - OFString *path = [OFString - stringWithFormat:@"%@register.do?action=add", masterpath]; + OFString *path = [OFString stringWithFormat: + @"%@register.do?action=add", masterpath]; httpgetsend(&masterserver, masterbase, path, @"cubeserver", @"Cube Server"); masterrep[0] = 0; masterb.data = masterrep; masterb.dataLength = MAXTRANS - 1; @@ -98,12 +99,12 @@ } unsigned char * retrieveservers(unsigned char *buf, int buflen) { - OFString *path = - [OFString stringWithFormat:@"%@retrieve.do?item=list", masterpath]; + OFString *path = [OFString stringWithFormat: + @"%@retrieve.do?item=list", masterpath]; httpgetsend( &masterserver, masterbase, path, @"cubeserver", @"Cube Server"); ENetBuffer eb; buf[0] = 0; eb.data = buf; @@ -138,12 +139,12 @@ p = &pong[len]; putint(&p, PROTOCOL_VERSION); putint(&p, mode); putint(&p, numplayers); putint(&p, minremain); - OFString *mname = [OFString stringWithFormat:@"%@%@", - (isfull ? @"[FULL] " : @""), smapname]; + OFString *mname = [OFString stringWithFormat: + @"%@%@", (isfull ? @"[FULL] " : @""), smapname]; sendstring(mname, &p); sendstring(serverdesc, &p); buf.dataLength = p - pong; enet_socket_send(pongsock, &addr, &buf, 1); } @@ -155,11 +156,12 @@ const char *master = master_.UTF8String; const char *mid = strstr(master, "/"); if (!mid) mid = master; masterpath = @(mid); - masterbase = [OFString stringWithUTF8String:master length:mid - master]; + masterbase = [OFString stringWithUTF8String: master + length: mid - master]; serverdesc = sdesc; if (listen) { ENetAddress address = { ENET_HOST_ANY, CUBE_SERVINFO_PORT }; pongsock = Index: src/serverutil.m ================================================================== --- src/serverutil.m +++ src/serverutil.m @@ -144,14 +144,14 @@ { cleanupserver(); va_list args; va_start(args, s); - OFString *msg = [[OFString alloc] initWithFormat:s arguments:args]; + OFString *msg = [[OFString alloc] initWithFormat: s arguments: args]; va_end(args); - [OFStdOut writeFormat:@"servererror: %@\n", msg]; + [OFStdOut writeFormat: @"servererror: %@\n", msg]; exit(1); } void * Index: src/sound.m ================================================================== --- src/sound.m +++ src/sound.m @@ -47,23 +47,23 @@ nosound = true; } Mix_AllocateChannels(MAXCHAN); } -COMMAND(music, ARG_1STR, (^(OFString *name) { +COMMAND(music, ARG_1STR, (^ (OFString *name) { if (nosound) return; stopsound(); if (soundvol && musicvol) { - name = [name stringByReplacingOccurrencesOfString:@"\\" - withString:@"/"]; - OFString *path = - [OFString stringWithFormat:@"packages/%@", name]; + name = [name stringByReplacingOccurrencesOfString: @"\\" + withString: @"/"]; + OFString *path = [OFString stringWithFormat: + @"packages/%@", name]; OFIRI *IRI = [Cube.sharedInstance.gameDataIRI - IRIByAppendingPathComponent:path]; + IRIByAppendingPathComponent: path]; if ((mod = Mix_LoadMUS( IRI.fileSystemRepresentation.UTF8String)) != NULL) { Mix_PlayMusic(mod, -1); Mix_VolumeMusic((musicvol * MAXVOL) / 255); @@ -75,26 +75,26 @@ static OFMutableArray *snames; COMMAND(registersound, ARG_1EST, ^int(OFString *name) { int i = 0; for (OFString *iter in snames) { - if ([iter isEqual:name]) + if ([iter isEqual: name]) return i; i++; } if (snames == nil) snames = [[OFMutableArray alloc] init]; if (samples == nil) samples = [[OFMutableData alloc] - initWithItemSize:sizeof(Mix_Chunk *)]; + initWithItemSize: sizeof(Mix_Chunk *)]; - [snames addObject:[name stringByReplacingOccurrencesOfString:@"\\" - withString:@"/"]]; + [snames addObject: [name stringByReplacingOccurrencesOfString: @"\\" + withString: @"/"]]; Mix_Chunk *sample = NULL; - [samples addItem:&sample]; + [samples addItem: &sample]; return samples.count - 1; }) void @@ -191,16 +191,16 @@ if (n < 0 || n >= samples.count) { conoutf(@"unregistered sound: %d", n); return; } - Mix_Chunk **sample = (Mix_Chunk **)[samples mutableItemAtIndex:n]; + Mix_Chunk **sample = (Mix_Chunk **)[samples mutableItemAtIndex: n]; if (*sample == NULL) { - OFString *path = [OFString - stringWithFormat:@"packages/sounds/%@.wav", snames[n]]; + OFString *path = [OFString stringWithFormat: + @"packages/sounds/%@.wav", snames[n]]; OFIRI *IRI = [Cube.sharedInstance.gameDataIRI - IRIByAppendingPathComponent:path]; + IRIByAppendingPathComponent: path]; *sample = Mix_LoadWAV(IRI.fileSystemRepresentation.UTF8String); if (*sample == NULL) { conoutf(@"failed to load sample: %@", IRI.string); @@ -216,8 +216,8 @@ newsoundloc(chan, loc); updatechanvol(chan, loc); } -COMMAND(sound, ARG_1INT, ^(int n) { +COMMAND(sound, ARG_1INT, ^ (int n) { playsound(n, NULL); }) Index: src/weapon.m ================================================================== --- src/weapon.m +++ src/weapon.m @@ -64,11 +64,11 @@ reloadtime(int gun) { return guns[gun].attackdelay; } -COMMAND(weapon, ARG_3STR, ^(OFString *a1, OFString *a2, OFString *a3) { +COMMAND(weapon, ARG_3STR, ^ (OFString *a1, OFString *a2, OFString *a3) { selectgun((a1.length > 0 ? a1.cube_intValue : -1), (a2.length > 0 ? a2.cube_intValue : -1), (a3.length > 0 ? a3.cube_intValue : -1)); }) @@ -115,11 +115,11 @@ if (demoplayback) return NULL; OFVector3D o = Player.player1.origin; for (Player *player in players) { - if (![Player isKindOfClass:Player.class]) + if (![Player isKindOfClass: Player.class]) continue; if (intersect(player, o, worldpos)) return [player name]; } @@ -165,13 +165,13 @@ hit(int target, int damage, __kindof DynamicEntity *d, DynamicEntity *at) { OFVector3D o = d.origin; if (d == Player.player1) selfdamage(damage, (at == Player.player1) ? -1 : -2, at); - else if ([d isKindOfClass:Monster.class]) - [d incurDamage:damage fromEntity:at]; - else if ([d isKindOfClass:Player.class]) { + else if ([d isKindOfClass: Monster.class]) + [d incurDamage: damage fromEntity: at]; + else if ([d isKindOfClass: Player.class]) { addmsg(1, 4, SV_DAMAGE, target, damage, ((Player *)d).lifeSequence); playsound(S_PAIN1 + rnd(5), &o); } particle_splash(3, damage, 1000, o); @@ -223,23 +223,23 @@ if (!p.local) return; radialeffect(Player.player1, v, -1, qdam, p.owner); - [players enumerateObjectsUsingBlock:^( - id player, size_t i, bool *stop) { + [players enumerateObjectsUsingBlock: + ^ (id player, size_t i, bool *stop) { if (i == notthisplayer) return; if (player == [OFNull null]) return; radialeffect(player, v, i, qdam, p.owner); }]; - [Monster.monsters enumerateObjectsUsingBlock:^( - Monster *monster, size_t i, bool *stop) { + [Monster.monsters enumerateObjectsUsingBlock: + ^ (Monster *monster, size_t i, bool *stop) { if (i != notthismonster) radialeffect(monster, v, i, qdam, p.owner); }]; } } @@ -266,11 +266,11 @@ if (!p.inuse) continue; int qdam = guns[p.gun].damage * (p.owner.quadMillis ? 4 : 1); - if ([p.owner isKindOfClass:Monster.class]) + if ([p.owner isKindOfClass: Monster.class]) qdam /= MONSTERDAMAGEFACTOR; OFVector3D po = p.o, pto = p.to; float dist = OFDistanceOfVectors3D(pto, po); OFVector3D v = OFSubtractVectors3D(pto, po); float dtime = dist * 1000 / p.speed; @@ -334,11 +334,11 @@ case GUN_RL: case GUN_FIREBALL: case GUN_ICEBALL: case GUN_SLIMEBALL: pspeed = guns[gun].projspeed; - if ([d isKindOfClass:Monster.class]) + if ([d isKindOfClass: Monster.class]) pspeed /= 2; newprojectile(from, to, (float)pspeed, local, d, gun); break; case GUN_RIFLE: @@ -366,11 +366,11 @@ if (o.state != CS_ALIVE) return; int qdam = guns[d.gunSelect].damage; if (d.quadMillis) qdam *= 4; - if ([d isKindOfClass:Monster.class]) + if ([d isKindOfClass: Monster.class]) qdam /= MONSTERDAMAGEFACTOR; if (d.gunSelect == GUN_SG) { int damage = 0; for (int r = 0; r < SGRAYS; r++) if (intersect(o, from, sg[r])) @@ -421,26 +421,27 @@ createrays(from, to); if (d.quadMillis && attacktime > 200) playsoundc(S_ITEMPUP); shootv(d.gunSelect, from, to, d, true); - if (![d isKindOfClass:Monster.class]) + if (![d isKindOfClass: Monster.class]) addmsg(1, 8, SV_SHOT, d.gunSelect, (int)(from.x * DMF), (int)(from.y * DMF), (int)(from.z * DMF), (int)(to.x * DMF), (int)(to.y * DMF), (int)(to.z * DMF)); d.gunWait = guns[d.gunSelect].attackdelay; if (guns[d.gunSelect].projspeed) return; - [players enumerateObjectsUsingBlock:^(id player, size_t i, bool *stop) { + [players enumerateObjectsUsingBlock: + ^ (id player, size_t i, bool *stop) { if (player != [OFNull null]) raydamage(player, from, to, d, i); }]; for (Monster *monster in Monster.monsters) if (monster != d) raydamage(monster, from, to, d, -2); - if ([d isKindOfClass:Monster.class]) + if ([d isKindOfClass: Monster.class]) raydamage(Player.player1, from, to, d, -1); } Index: src/world.m ================================================================== --- src/world.m +++ src/world.m @@ -64,11 +64,11 @@ void settagareas() { settag(0, 1); - [ents enumerateObjectsUsingBlock:^(Entity *e, size_t i, bool *stop) { + [ents enumerateObjectsUsingBlock: ^ (Entity *e, size_t i, bool *stop) { if (ents[i].type == CARROT) setspawn(i, true); }]; } @@ -81,21 +81,21 @@ settag(tag, type); if (!savegame && type != 3) playsound(S_RUMBLE, NULL); - OFString *aliasname = - [OFString stringWithFormat:@"level_trigger_%d", tag]; + OFString *aliasname = [OFString stringWithFormat: + @"level_trigger_%d", tag]; if (identexists(aliasname)) execute(aliasname, true); if (type == 2) - [Monster endSinglePlayerWithAllKilled:false]; + [Monster endSinglePlayerWithAllKilled: false]; } -COMMAND(trigger, ARG_2INT, ^(int tag, int type, bool savegame) { +COMMAND(trigger, ARG_2INT, ^ (int tag, int type, bool savegame) { trigger(tag, type, savegame); }) // main geometric mipmapping routine, recursively rebuild mipmaps within block // b. tries to produce cube out of 4 lower level mips as well as possible, sets @@ -291,11 +291,11 @@ if (noteditmode()) return -1; __block int best; __block float bdist = 99999; - [ents enumerateObjectsUsingBlock:^(Entity *e, size_t i, bool *stop) { + [ents enumerateObjectsUsingBlock: ^ (Entity *e, size_t i, bool *stop) { if (e.type == NOTUSED) return; OFVector3D v = OFMakeVector3D(e.x, e.y, e.z); float dist = OFDistanceOfVectors3D(v, Player.player1.origin); @@ -306,11 +306,11 @@ }]; return (bdist == 99999 ? -1 : best); } -COMMAND(entproperty, ARG_2INT, ^(int prop, int amount) { +COMMAND(entproperty, ARG_2INT, ^ (int prop, int amount) { int e = closestent(); if (e < 0) return; switch (prop) { case 0: @@ -326,11 +326,11 @@ ents[e].attr4 += amount; break; } }) -COMMAND(delent, ARG_NONE, ^{ +COMMAND(delent, ARG_NONE, ^ { int e = closestent(); if (e < 0) { conoutf(@"no more entities"); return; } @@ -344,11 +344,11 @@ int findtype(OFString *what) { for (int i = 0; i < MAXENTTYPES; i++) - if ([what isEqual:entnames[i]]) + if ([what isEqual: entnames[i]]) return i; conoutf(@"unknown entity type \"%@\"", what); return NOTUSED; } @@ -387,19 +387,19 @@ break; } addmsg(1, 10, SV_EDITENT, ents.count, type, e.x, e.y, e.z, e.attr1, e.attr2, e.attr3, e.attr4); - [ents addObject:e]; + [ents addObject: e]; if (type == LIGHT) calclight(); return e; } -COMMAND(clearents, ARG_1STR, ^(OFString *name) { +COMMAND(clearents, ARG_1STR, ^ (OFString *name) { int type = findtype(name); if (noteditmode() || multiplayer()) return; @@ -418,11 +418,11 @@ if (n > 255) n = 255; return n; } -COMMAND(scalelights, ARG_2INT, ^(int f, int intens) { +COMMAND(scalelights, ARG_2INT, ^ (int f, int intens) { for (Entity *e in ents) { if (e.type != LIGHT) continue; e.attr1 = e.attr1 * f / 100; @@ -543,16 +543,16 @@ toggleedit(); execute(@"fullbright 1", true); } } -COMMAND(mapenlarge, ARG_NONE, ^{ +COMMAND(mapenlarge, ARG_NONE, ^ { empty_world(-1, false); }) -COMMAND(newmap, ARG_1INT, ^(int i) { +COMMAND(newmap, ARG_1INT, ^ (int i) { empty_world(i, false); }) -COMMAND(recalc, ARG_NONE, ^{ +COMMAND(recalc, ARG_NONE, ^ { calclight(); }) Index: src/worldio.m ================================================================== --- src/worldio.m +++ src/worldio.m @@ -13,40 +13,40 @@ }; void backup(OFString *name, OFString *backupname) { - [OFFileManager.defaultManager removeItemAtPath:backupname]; - [OFFileManager.defaultManager moveItemAtPath:name toPath:backupname]; + [OFFileManager.defaultManager removeItemAtPath: backupname]; + [OFFileManager.defaultManager moveItemAtPath: name toPath: backupname]; } static OFString *cgzname, *bakname, *pcfname, *mcfname; static void setnames(OFString *name) { OFCharacterSet *cs = - [OFCharacterSet characterSetWithCharactersInString:@"/\\"]; - OFRange range = [name rangeOfCharacterFromSet:cs]; + [OFCharacterSet characterSetWithCharactersInString: @"/\\"]; + OFRange range = [name rangeOfCharacterFromSet: cs]; OFString *pakname, *mapname; if (range.location != OFNotFound) { - pakname = [name substringToIndex:range.location]; - mapname = [name substringFromIndex:range.location + 1]; + pakname = [name substringToIndex: range.location]; + mapname = [name substringFromIndex: range.location + 1]; } else { pakname = @"base"; mapname = name; } - cgzname = [[OFString alloc] - initWithFormat:@"packages/%@/%@.cgz", pakname, mapname]; - bakname = [[OFString alloc] initWithFormat:@"packages/%@/%@_%d.BAK", - pakname, mapname, lastmillis]; - pcfname = [[OFString alloc] - initWithFormat:@"packages/%@/package.cfg", pakname]; - mcfname = [[OFString alloc] - initWithFormat:@"packages/%@/%@.cfg", pakname, mapname]; + cgzname = [[OFString alloc] initWithFormat: + @"packages/%@/%@.cgz", pakname, mapname]; + bakname = [[OFString alloc] initWithFormat: + @"packages/%@/%@_%d.BAK", pakname, mapname, lastmillis]; + pcfname = [[OFString alloc] initWithFormat: + @"packages/%@/package.cfg", pakname]; + mcfname = [[OFString alloc] initWithFormat: + @"packages/%@/%@.cfg", pakname, mapname]; } // the optimize routines below are here to reduce the detrimental effects of // messy mapping by setting certain properties (vdeltas and textures) to // neighbouring values wherever there is no visible difference. This allows the @@ -143,11 +143,11 @@ writemap(OFString *mname, int msize, unsigned char *mdata) { setnames(mname); backup(cgzname, bakname); - FILE *f = fopen([cgzname cStringWithEncoding:OFLocale.encoding], "wb"); + FILE *f = fopen([cgzname cStringWithEncoding: OFLocale.encoding], "wb"); if (!f) { conoutf(@"could not write map to %@", cgzname); return; } fwrite(mdata, 1, msize, f); @@ -157,11 +157,11 @@ OFData * readmap(OFString *mname) { setnames(mname); - return [OFData dataWithContentsOfFile:mname]; + return [OFData dataWithContentsOfFile: mname]; } // save map as .cgz file. uses 2 layers of compression: first does simple // run-length encoding and leaves out data for certain kinds of cubes, then zlib // removes the last bits of redundancy. Both passes contribute greatly to the @@ -176,12 +176,12 @@ toptimize(); if (mname.length == 0) mname = getclientmap(); setnames(mname); backup(cgzname, bakname); - gzFile f = - gzopen([cgzname cStringWithEncoding:OFLocale.encoding], "wb9"); + gzFile f = gzopen([cgzname cStringWithEncoding: OFLocale.encoding], + "wb9"); if (!f) { conoutf(@"could not write map to %@", cgzname); return; } hdr.version = MAPVERSION; @@ -256,11 +256,11 @@ gzclose(f); conoutf(@"wrote map file %@", cgzname); settagareas(); } -COMMAND(savemap, ARG_1STR, ^(OFString *mname) { +COMMAND(savemap, ARG_1STR, ^ (OFString *mname) { save_world(mname); }) void load_world(OFString *mname) // still supports all map formats that have existed @@ -268,12 +268,12 @@ { stopifrecording(); cleardlights(); pruneundos(0); setnames(mname); - gzFile f = - gzopen([cgzname cStringWithEncoding:OFLocale.encoding], "rb9"); + gzFile f = gzopen([cgzname cStringWithEncoding: OFLocale.encoding], + "rb9"); if (!f) { conoutf(@"could not read map %@", cgzname); return; } gzread(f, &hdr, sizeof(struct header) - sizeof(int) * 16); @@ -303,11 +303,11 @@ e.attr1 = tmp.attr1; e.type = tmp.type; e.attr2 = tmp.attr2; e.attr3 = tmp.attr3; e.attr4 = tmp.attr4; - [ents addObject:e]; + [ents addObject: e]; if (e.type == LIGHT) { if (!e.attr2) e.attr2 = 255; // needed for MAPVERSION<=2 if (e.attr1 > 32) @@ -394,16 +394,16 @@ SDL_GetTicks() - lastmillis); conoutf(@"%s", hdr.maptitle); startmap(mname); for (int l = 0; l < 256; l++) { // can this be done smarter? - OFString *aliasname = - [OFString stringWithFormat:@"level_trigger_%d", l]; + OFString *aliasname = [OFString stringWithFormat: + @"level_trigger_%d", l]; if (identexists(aliasname)) alias(aliasname, @""); } OFIRI *gameDataIRI = Cube.sharedInstance.gameDataIRI; execfile([gameDataIRI - IRIByAppendingPathComponent:@"data/default_map_settings.cfg"]); - execfile([gameDataIRI IRIByAppendingPathComponent:pcfname]); - execfile([gameDataIRI IRIByAppendingPathComponent:mcfname]); + IRIByAppendingPathComponent: @"data/default_map_settings.cfg"]); + execfile([gameDataIRI IRIByAppendingPathComponent: pcfname]); + execfile([gameDataIRI IRIByAppendingPathComponent: mcfname]); } Index: src/worldlight.m ================================================================== --- src/worldlight.m +++ src/worldlight.m @@ -203,11 +203,11 @@ dodynlight(OFVector3D vold, OFVector3D v, int reach, int strength, DynamicEntity *owner) { if (!reach) reach = dynlight; - if ([owner isKindOfClass:Monster.class]) + if ([owner isKindOfClass: Monster.class]) reach = reach / 2; if (!reach) return; if (v.x < 0 || v.y < 0 || v.x > ssize || v.y > ssize) return; @@ -225,15 +225,15 @@ if (b.ys + b.y > ssize - 2) b.ys = ssize - 2 - b.y; if (dlights == nil) dlights = [[OFMutableData alloc] - initWithItemSize:sizeof(struct block *)]; + initWithItemSize: sizeof(struct block *)]; // backup area before rendering in dynlight struct block *copy = blockcopy(&b); - [dlights addItem:©]; + [dlights addItem: ©]; Entity *l = [Entity entity]; l.x = v.x; l.y = v.y; l.z = v.z; Index: src/worldocull.m ================================================================== --- src/worldocull.m +++ src/worldocull.m @@ -9,11 +9,11 @@ float rdist[NUMRAYS]; bool ocull = true; float odist = 256; -COMMAND(toggleocull, ARG_NONE, ^{ +COMMAND(toggleocull, ARG_NONE, ^ { ocull = !ocull; }) // constructs occlusion map: cast rays in all directions on the 2d plane and // record distance. done exactly once per frame.