Switch from clang-format to manual formatting

clang-format does too many weird things.

FossilOrigin-Name: 75e920ae307d96d6ce0141652617959f609c21b542e930cb537789298856c480
This commit is contained in:
Jonathan Schleifer 2025-03-29 14:25:43 +00:00
parent 3a081f18e5
commit d3dc40de33
62 changed files with 945 additions and 991 deletions

View file

@ -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

View file

@ -6,13 +6,13 @@ OF_ASSUME_NONNULL_BEGIN
@property (direct, copy, nonatomic) OFString *action; @property (direct, copy, nonatomic) OFString *action;
@property (readonly, nonatomic) bool persisted; @property (readonly, nonatomic) bool persisted;
+ (instancetype)aliasWithName:(OFString *)name + (instancetype)aliasWithName: (OFString *)name
action:(OFString *)action action: (OFString *)action
persisted:(bool)persisted OF_DIRECT; persisted: (bool)persisted OF_DIRECT;
- (instancetype)initWithName:(OFString *)name OF_UNAVAILABLE; - (instancetype)initWithName: (OFString *)name OF_UNAVAILABLE;
- (instancetype)initWithName:(OFString *)name - (instancetype)initWithName: (OFString *)name
action:(OFString *)action action: (OFString *)action
persisted:(bool)persisted OF_DESIGNATED_INITIALIZER persisted: (bool)persisted OF_DESIGNATED_INITIALIZER
OF_DIRECT; OF_DIRECT;
@end @end

View file

@ -1,20 +1,20 @@
#import "Alias.h" #import "Alias.h"
@implementation Alias @implementation Alias
+ (instancetype)aliasWithName:(OFString *)name + (instancetype)aliasWithName: (OFString *)name
action:(OFString *)action action: (OFString *)action
persisted:(bool)persisted; persisted: (bool)persisted;
{ {
return [[self alloc] initWithName:name return [[self alloc] initWithName: name
action:action action: action
persisted:persisted]; persisted: persisted];
} }
- (instancetype)initWithName:(OFString *)name - (instancetype)initWithName: (OFString *)name
action:(OFString *)action action: (OFString *)action
persisted:(bool)persisted persisted: (bool)persisted
{ {
self = [super initWithName:name]; self = [super initWithName: name];
_action = [action copy]; _action = [action copy];
_persisted = persisted; _persisted = persisted;

View file

@ -2,29 +2,29 @@
OF_ASSUME_NONNULL_BEGIN OF_ASSUME_NONNULL_BEGIN
#define COMMAND(name, nargs, block_) \ #define COMMAND(name, nargs, block_) \
OF_CONSTRUCTOR() \ OF_CONSTRUCTOR() \
{ \ { \
enqueueInit(^{ \ enqueueInit(^ { \
Identifier.identifiers[@ #name] = \ Identifier.identifiers[@#name] = \
[Command commandWithName:@ #name \ [Command commandWithName: @#name \
argumentsTypes:nargs \ argumentsTypes: nargs \
block:block_]; \ block: block_]; \
}); \ }); \
} }
OF_DIRECT_MEMBERS OF_DIRECT_MEMBERS
@interface Command: Identifier @interface Command: Identifier
@property (readonly, nonatomic) int argumentsTypes; @property (readonly, nonatomic) int argumentsTypes;
+ (instancetype)commandWithName:(OFString *)name + (instancetype)commandWithName: (OFString *)name
argumentsTypes:(int)argumentsTypes argumentsTypes: (int)argumentsTypes
block:(id)block; block: (id)block;
- (instancetype)initWithName:(OFString *)name OF_UNAVAILABLE; - (instancetype)initWithName: (OFString *)name OF_UNAVAILABLE;
- (instancetype)initWithName:(OFString *)name - (instancetype)initWithName: (OFString *)name
argumentsTypes:(int)argumentsTypes argumentsTypes: (int)argumentsTypes
block:(id)block OF_DESIGNATED_INITIALIZER; block: (id)block OF_DESIGNATED_INITIALIZER;
- (int)callWithArguments:(OFArray<OFString *> *)arguments isDown:(bool)isDown; - (int)callWithArguments: (OFArray<OFString *> *)arguments isDown: (bool)isDown;
@end @end
OF_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END

View file

@ -13,7 +13,7 @@ padArguments(OFArray<OFString *> *arguments, size_t count)
copy = [arguments mutableCopy]; copy = [arguments mutableCopy];
while (copy.count < count) while (copy.count < count)
[copy addObject:@""]; [copy addObject: @""];
[copy makeImmutable]; [copy makeImmutable];
return copy; return copy;
@ -24,20 +24,20 @@ padArguments(OFArray<OFString *> *arguments, size_t count)
id _block; id _block;
} }
+ (instancetype)commandWithName:(OFString *)name + (instancetype)commandWithName: (OFString *)name
argumentsTypes:(int)argumentsTypes argumentsTypes: (int)argumentsTypes
block:(id)block block: (id)block
{ {
return [[self alloc] initWithName:name return [[self alloc] initWithName: name
argumentsTypes:argumentsTypes argumentsTypes: argumentsTypes
block:block]; block: block];
} }
- (instancetype)initWithName:(OFString *)name - (instancetype)initWithName: (OFString *)name
argumentsTypes:(int)argumentsTypes argumentsTypes: (int)argumentsTypes
block:(id)block block: (id)block
{ {
self = [super initWithName:name]; self = [super initWithName: name];
_argumentsTypes = argumentsTypes; _argumentsTypes = argumentsTypes;
_block = block; _block = block;
@ -45,41 +45,41 @@ padArguments(OFArray<OFString *> *arguments, size_t count)
return self; return self;
} }
- (int)callWithArguments:(OFArray<OFString *> *)arguments isDown:(bool)isDown - (int)callWithArguments: (OFArray<OFString *> *)arguments isDown: (bool)isDown
{ {
switch (_argumentsTypes) { switch (_argumentsTypes) {
case ARG_1INT: case ARG_1INT:
if (isDown) { if (isDown) {
arguments = padArguments(arguments, 2); arguments = padArguments(arguments, 2);
((void (^)(int))_block)( ((void (^)(int))_block)(
[arguments[1] cube_intValueWithBase:0]); [arguments[1] cube_intValueWithBase: 0]);
} }
break; break;
case ARG_2INT: case ARG_2INT:
if (isDown) { if (isDown) {
arguments = padArguments(arguments, 3); arguments = padArguments(arguments, 3);
((void (^)(int, int))_block)( ((void (^)(int, int))_block)(
[arguments[1] cube_intValueWithBase:0], [arguments[1] cube_intValueWithBase: 0],
[arguments[2] cube_intValueWithBase:0]); [arguments[2] cube_intValueWithBase: 0]);
} }
break; break;
case ARG_3INT: case ARG_3INT:
if (isDown) { if (isDown) {
arguments = padArguments(arguments, 4); arguments = padArguments(arguments, 4);
((void (^)(int, int, int))_block)( ((void (^)(int, int, int))_block)(
[arguments[1] cube_intValueWithBase:0], [arguments[1] cube_intValueWithBase: 0],
[arguments[2] cube_intValueWithBase:0], [arguments[2] cube_intValueWithBase: 0],
[arguments[3] cube_intValueWithBase:0]); [arguments[3] cube_intValueWithBase: 0]);
} }
break; break;
case ARG_4INT: case ARG_4INT:
if (isDown) { if (isDown) {
arguments = padArguments(arguments, 5); arguments = padArguments(arguments, 5);
((void (^)(int, int, int, int))_block)( ((void (^)(int, int, int, int))_block)(
[arguments[1] cube_intValueWithBase:0], [arguments[1] cube_intValueWithBase: 0],
[arguments[2] cube_intValueWithBase:0], [arguments[2] cube_intValueWithBase: 0],
[arguments[3] cube_intValueWithBase:0], [arguments[3] cube_intValueWithBase: 0],
[arguments[4] cube_intValueWithBase:0]); [arguments[4] cube_intValueWithBase: 0]);
} }
break; break;
case ARG_NONE: case ARG_NONE:
@ -154,8 +154,8 @@ padArguments(OFArray<OFString *> *arguments, size_t count)
if (isDown) if (isDown)
// limit, remove // limit, remove
((void (^)(OFString *))_block)([[arguments ((void (^)(OFString *))_block)([[arguments
objectsInRange:OFMakeRange(1, arguments.count - 1)] objectsInRange: OFMakeRange(1, arguments.count - 1)]
componentsJoinedByString:@" "]); componentsJoinedByString: @" "]);
break; break;
} }

View file

@ -5,6 +5,6 @@ OF_DIRECT_MEMBERS
@property (readonly, copy) OFString *text; @property (readonly, copy) OFString *text;
@property (readonly) int outtime; @property (readonly) int outtime;
+ (instancetype)lineWithText:(OFString *)text outtime:(int)outtime; + (instancetype)lineWithText: (OFString *)text outtime: (int)outtime;
- (instancetype)initWithText:(OFString *)text outtime:(int)outtime; - (instancetype)initWithText: (OFString *)text outtime: (int)outtime;
@end @end

View file

@ -1,12 +1,12 @@
#import "ConsoleLine.h" #import "ConsoleLine.h"
@implementation ConsoleLine @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]; self = [super init];

View file

@ -21,7 +21,7 @@ VARP(minmillis, 0, 5, 1000);
return (Cube *)OFApplication.sharedApplication.delegate; return (Cube *)OFApplication.sharedApplication.delegate;
} }
- (void)applicationDidFinishLaunching:(OFNotification *)notification - (void)applicationDidFinishLaunching: (OFNotification *)notification
{ {
@autoreleasepool { @autoreleasepool {
bool dedicated, windowed; bool dedicated, windowed;
@ -48,7 +48,7 @@ VARP(minmillis, 0, 5, 1000);
{ '\0', nil, 0, NULL, NULL } { '\0', nil, 0, NULL, NULL }
}; };
OFOptionsParser *optionsParser = OFOptionsParser *optionsParser =
[OFOptionsParser parserWithOptions:options]; [OFOptionsParser parserWithOptions: options];
OFUnichar option; OFUnichar option;
while ((option = [optionsParser nextOption]) != '\0') { while ((option = [optionsParser nextOption]) != '\0') {
switch (option) { switch (option) {
@ -68,7 +68,7 @@ VARP(minmillis, 0, 5, 1000);
case '=': case '=':
case '?': case '?':
conoutf(@"unknown commandline option"); conoutf(@"unknown commandline option");
[OFApplication terminateWithStatus:1]; [OFApplication terminateWithStatus: 1];
} }
} }
@ -85,11 +85,11 @@ VARP(minmillis, 0, 5, 1000);
[OFFileManager.defaultManager currentDirectoryIRI]; [OFFileManager.defaultManager currentDirectoryIRI];
[OFFileManager.defaultManager createDirectoryAtIRI: [OFFileManager.defaultManager createDirectoryAtIRI:
[_userDataIRI IRIByAppendingPathComponent:@"demos"] [_userDataIRI IRIByAppendingPathComponent: @"demos"]
createParents:true]; createParents: true];
[OFFileManager.defaultManager createDirectoryAtIRI: [OFFileManager.defaultManager createDirectoryAtIRI:
[_userDataIRI IRIByAppendingPathComponent:@"savegames"] [_userDataIRI IRIByAppendingPathComponent: @"savegames"]
createParents:true]; createParents: true];
if (SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO | par) < 0) if (SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO | par) < 0)
fatal(@"Unable to initialize SDL"); fatal(@"Unable to initialize SDL");
@ -145,44 +145,26 @@ VARP(minmillis, 0, 5, 1000);
log(@"basetex"); log(@"basetex");
int xs, ys; int xs, ys;
if (!installtex(2, if (!installtex(2, [_gameDataIRI IRIByAppendingPathComponent:
[_gameDataIRI @"data/newchars.png"], &xs, &ys, false) ||
IRIByAppendingPathComponent:@"data/newchars.png"], !installtex(3, [_gameDataIRI IRIByAppendingPathComponent:
&xs, &ys, false) || @"data/martin/base.png"], &xs, &ys, false) ||
!installtex(3, !installtex(6, [_gameDataIRI IRIByAppendingPathComponent:
[_gameDataIRI IRIByAppendingPathComponent: @"data/martin/ball1.png"], &xs, &ys, false) ||
@"data/martin/base.png"], !installtex(7, [_gameDataIRI IRIByAppendingPathComponent:
&xs, &ys, false) || @"data/martin/smoke.png"], &xs, &ys, false) ||
!installtex(6, !installtex(8, [_gameDataIRI IRIByAppendingPathComponent:
[_gameDataIRI IRIByAppendingPathComponent: @"data/martin/ball2.png"], &xs, &ys, false) ||
@"data/martin/ball1.png"], !installtex(9, [_gameDataIRI IRIByAppendingPathComponent:
&xs, &ys, false) || @"data/martin/ball3.png"], &xs, &ys, false) ||
!installtex(7, !installtex(4, [_gameDataIRI IRIByAppendingPathComponent:
[_gameDataIRI IRIByAppendingPathComponent: @"data/explosion.jpg"], &xs, &ys, false) ||
@"data/martin/smoke.png"], !installtex(5, [_gameDataIRI IRIByAppendingPathComponent:
&xs, &ys, false) || @"data/items.png"], &xs, &ys, false) ||
!installtex(8, !installtex(1, [_gameDataIRI IRIByAppendingPathComponent:
[_gameDataIRI IRIByAppendingPathComponent: @"data/crosshair.png"], &xs, &ys, false))
@"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 " 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"); log(@"sound");
initsound(); initsound();
@ -196,9 +178,9 @@ VARP(minmillis, 0, 5, 1000);
exec(@"data/sounds.cfg"); exec(@"data/sounds.cfg");
exec(@"servers.cfg"); exec(@"servers.cfg");
if (!execfile([_userDataIRI if (!execfile([_userDataIRI
IRIByAppendingPathComponent:@"config.cfg"])) IRIByAppendingPathComponent: @"config.cfg"]))
execfile([_gameDataIRI execfile([_gameDataIRI
IRIByAppendingPathComponent:@"data/defaults.cfg"]); IRIByAppendingPathComponent: @"data/defaults.cfg"]);
exec(@"autoexec.cfg"); exec(@"autoexec.cfg");
log(@"localconnect"); log(@"localconnect");
@ -213,7 +195,7 @@ VARP(minmillis, 0, 5, 1000);
int ignore = 5; int ignore = 5;
for (;;) { for (;;) {
@autoreleasepool { @autoreleasepool {
[OFRunLoop.mainRunLoop runUntilDate:past]; [OFRunLoop.mainRunLoop runUntilDate: past];
Player *player1 = Player.player1; Player *player1 = Player.player1;
@ -295,7 +277,7 @@ VARP(minmillis, 0, 5, 1000);
} }
} }
- (void)applicationWillTerminate:(OFNotification *)notification - (void)applicationWillTerminate: (OFNotification *)notification
{ {
stop(); stop();
disconnect(true, false); disconnect(true, false);
@ -307,13 +289,13 @@ VARP(minmillis, 0, 5, 1000);
SDL_Quit(); SDL_Quit();
} }
- (void)showMessage:(OFString *)msg - (void)showMessage: (OFString *)msg
{ {
#ifdef _WIN32 #ifdef _WIN32
MessageBoxW( MessageBoxW(
NULL, msg.UTF16String, L"cube fatal error", MB_OK | MB_SYSTEMMODAL); NULL, msg.UTF16String, L"cube fatal error", MB_OK | MB_SYSTEMMODAL);
#else #else
[OFStdOut writeString:msg]; [OFStdOut writeString: msg];
#endif #endif
} }
@ -339,12 +321,11 @@ VARP(minmillis, 0, 5, 1000);
endianswap(dest, 3, _width); endianswap(dest, 3, _width);
} }
OFString *path = [OFString OFString *path = [OFString stringWithFormat:
stringWithFormat:@"screenshots/screenshot_%d.bmp", @"screenshots/screenshot_%d.bmp", lastmillis];
lastmillis];
SDL_SaveBMP(temp, SDL_SaveBMP(temp,
[_userDataIRI IRIByAppendingPathComponent:path] [_userDataIRI IRIByAppendingPathComponent: path]
.fileSystemRepresentation.UTF8String); .fileSystemRepresentation.UTF8String);
SDL_FreeSurface(temp); SDL_FreeSurface(temp);
} }
@ -355,7 +336,7 @@ VARP(minmillis, 0, 5, 1000);
- (void)quit - (void)quit
{ {
writeservercfg(); writeservercfg();
[OFApplication terminateWithStatus:0]; [OFApplication terminateWithStatus: 0];
} }
@end @end
@ -365,21 +346,21 @@ fatal(OFConstantString *s, ...)
{ {
va_list args; va_list args;
va_start(args, s); va_start(args, s);
OFMutableString *msg = [[OFMutableString alloc] initWithFormat:s OFMutableString *msg = [[OFMutableString alloc] initWithFormat: s
arguments:args]; arguments: args];
va_end(args); va_end(args);
[msg appendFormat:@" (%s)\n", SDL_GetError()]; [msg appendFormat: @" (%s)\n", SDL_GetError()];
[Cube.sharedInstance showMessage:msg]; [Cube.sharedInstance showMessage: msg];
[OFApplication terminateWithStatus:1]; [OFApplication terminateWithStatus: 1];
} }
// normal exit // normal exit
COMMAND(quit, ARG_NONE, ^{ COMMAND(quit, ARG_NONE, ^ {
[Cube.sharedInstance quit]; [Cube.sharedInstance quit];
}) })
COMMAND(screenshot, ARG_NONE, ^{ COMMAND(screenshot, ARG_NONE, ^ {
[Cube.sharedInstance screenshot]; [Cube.sharedInstance screenshot];
}) })

View file

@ -33,7 +33,7 @@
@property (direct, copy, nonatomic) OFString *name; @property (direct, copy, nonatomic) OFString *name;
- (OFData *)dataBySerializing; - (OFData *)dataBySerializing;
- (void)setFromSerializedData:(OFData *)data; - (void)setFromSerializedData: (OFData *)data;
- (void)resetMovement; - (void)resetMovement;
// reset player state not persistent accross spawns // reset player state not persistent accross spawns
- (void)resetToSpawnState; - (void)resetToSpawnState;

View file

@ -167,7 +167,7 @@ struct dynent {
memcpy(data.name, _name.UTF8String, min(_name.UTF8StringLength, 259)); memcpy(data.name, _name.UTF8String, min(_name.UTF8StringLength, 259));
if ([self isKindOfClass:Player.class]) { if ([self isKindOfClass: Player.class]) {
Player *player = (Player *)self; Player *player = (Player *)self;
data.lifeSequence = player.lifeSequence, data.lifeSequence = player.lifeSequence,
data.frags = player.frags; data.frags = player.frags;
@ -175,7 +175,7 @@ struct dynent {
min(player.team.UTF8StringLength, 259)); min(player.team.UTF8StringLength, 259));
} }
if ([self isKindOfClass:Monster.class]) { if ([self isKindOfClass: Monster.class]) {
Monster *monster = (Monster *)self; Monster *monster = (Monster *)self;
data.monsterState = monster.monsterState; data.monsterState = monster.monsterState;
data.monsterType = monster.monsterType; data.monsterType = monster.monsterType;
@ -185,10 +185,10 @@ struct dynent {
data.anger = monster.anger; 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; struct dynent d;
@ -239,16 +239,16 @@ struct dynent {
_blocked = d.blocked; _blocked = d.blocked;
_moving = d.moving; _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 *player = (Player *)self;
player.lifeSequence = d.lifeSequence; player.lifeSequence = d.lifeSequence;
player.frags = d.frags; player.frags = d.frags;
player.team = @(d.team); player.team = @(d.team);
} }
if ([self isKindOfClass:Monster.class]) { if ([self isKindOfClass: Monster.class]) {
Monster *monster = (Monster *)self; Monster *monster = (Monster *)self;
monster.monsterState = d.monsterState; monster.monsterState = d.monsterState;
monster.monsterType = d.monsterType; monster.monsterType = d.monsterType;

View file

@ -8,7 +8,7 @@ OF_ASSUME_NONNULL_BEGIN
OFMutableDictionary<OFString *, __kindof Identifier *> *identifiers; OFMutableDictionary<OFString *, __kindof Identifier *> *identifiers;
- (instancetype)init OF_UNAVAILABLE; - (instancetype)init OF_UNAVAILABLE;
- (instancetype)initWithName:(OFString *)name; - (instancetype)initWithName: (OFString *)name;
@end @end
OF_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END

View file

@ -15,7 +15,7 @@ static OFMutableDictionary<OFString *, __kindof Identifier *> *identifiers;
return identifiers; return identifiers;
} }
- (instancetype)initWithName:(OFString *)name - (instancetype)initWithName: (OFString *)name
{ {
self = [super init]; self = [super init];

View file

@ -8,9 +8,9 @@ OF_DIRECT_MEMBERS
@property (readonly, nonatomic) OFString *name; @property (readonly, nonatomic) OFString *name;
@property (copy, nonatomic) OFString *action; @property (copy, nonatomic) OFString *action;
+ (instancetype)mappingWithCode:(int)code name:(OFString *)name; + (instancetype)mappingWithCode: (int)code name: (OFString *)name;
- (instancetype)init OF_UNAVAILABLE; - (instancetype)init OF_UNAVAILABLE;
- (instancetype)initWithCode:(int)code name:(OFString *)name; - (instancetype)initWithCode: (int)code name: (OFString *)name;
@end @end
OF_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END

View file

@ -1,12 +1,12 @@
#import "KeyMapping.h" #import "KeyMapping.h"
@implementation KeyMapping @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]; self = [super init];

View file

@ -12,18 +12,18 @@ OF_DIRECT_MEMBERS
@property (nonatomic) bool loaded; @property (nonatomic) bool loaded;
+ (instancetype)md2; + (instancetype)md2;
- (bool)loadWithIRI:(OFIRI *)IRI; - (bool)loadWithIRI: (OFIRI *)IRI;
- (void)renderWithLight:(OFColor *)light - (void)renderWithLight: (OFColor *)light
frame:(int)frame frame: (int)frame
range:(int)range range: (int)range
position:(OFVector3D)position position: (OFVector3D)position
yaw:(float)yaw yaw: (float)yaw
pitch:(float)pitch pitch: (float)pitch
scale:(float)scale scale: (float)scale
speed:(float)speed speed: (float)speed
snap:(int)snap snap: (int)snap
basetime:(int)basetime; basetime: (int)basetime;
- (void)scaleWithFrame:(int)frame scale:(float)scale snap:(int)snap; - (void)scaleWithFrame: (int)frame scale: (float)scale snap: (int)snap;
@end @end
OF_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END

View file

@ -63,22 +63,22 @@ snap(int sn, float f)
OFFreeMemory(_mverts); OFFreeMemory(_mverts);
} }
- (bool)loadWithIRI:(OFIRI *)IRI - (bool)loadWithIRI: (OFIRI *)IRI
{ {
OFSeekableStream *stream; OFSeekableStream *stream;
@try { @try {
stream = (OFSeekableStream *)[[OFIRIHandler handlerForIRI:IRI] stream = (OFSeekableStream *)[[OFIRIHandler handlerForIRI: IRI]
openItemAtIRI:IRI openItemAtIRI: IRI
mode:@"r"]; mode: @"r"];
} @catch (id e) { } @catch (id e) {
return false; return false;
} }
if (![stream isKindOfClass:OFSeekableStream.class]) if (![stream isKindOfClass: OFSeekableStream.class])
return false; return false;
struct md2_header header; struct md2_header header;
[stream readIntoBuffer:&header exactLength:sizeof(header)]; [stream readIntoBuffer: &header exactLength: sizeof(header)];
endianswap(&header, sizeof(int), sizeof(header) / sizeof(int)); endianswap(&header, sizeof(int), sizeof(header) / sizeof(int));
if (header.magic != 844121161 || header.version != 8) if (header.magic != 844121161 || header.version != 8)
@ -90,9 +90,9 @@ snap(int sn, float f)
return false; return false;
} }
[stream seekToOffset:header.offsetFrames whence:OFSeekSet]; [stream seekToOffset: header.offsetFrames whence: OFSeekSet];
[stream readIntoBuffer:_frames [stream readIntoBuffer: _frames
exactLength:header.frameSize * header.numFrames]; exactLength: header.frameSize * header.numFrames];
for (int i = 0; i < header.numFrames; ++i) for (int i = 0; i < header.numFrames; ++i)
endianswap(_frames + i * header.frameSize, sizeof(float), 6); endianswap(_frames + i * header.frameSize, sizeof(float), 6);
@ -103,9 +103,9 @@ snap(int sn, float f)
return false; return false;
} }
[stream seekToOffset:header.offsetGlCommands whence:OFSeekSet]; [stream seekToOffset: header.offsetGlCommands whence: OFSeekSet];
[stream readIntoBuffer:_glCommands [stream readIntoBuffer: _glCommands
exactLength:header.numGlCommands * sizeof(int)]; exactLength: header.numGlCommands * sizeof(int)];
endianswap(_glCommands, sizeof(int), header.numGlCommands); endianswap(_glCommands, sizeof(int), header.numGlCommands);
_numFrames = header.numFrames; _numFrames = header.numFrames;
@ -121,7 +121,7 @@ snap(int sn, float f)
return true; 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); OFAssert(_mverts[frame] == NULL);
@ -139,20 +139,20 @@ snap(int sn, float f)
} }
} }
- (void)renderWithLight:(OFColor *)light - (void)renderWithLight: (OFColor *)light
frame:(int)frame frame: (int)frame
range:(int)range range: (int)range
position:(OFVector3D)position position: (OFVector3D)position
yaw:(float)yaw yaw: (float)yaw
pitch:(float)pitch pitch: (float)pitch
scale:(float)sc scale: (float)sc
speed:(float)speed speed: (float)speed
snap:(int)sn snap: (int)sn
basetime:(int)basetime basetime: (int)basetime
{ {
for (int i = 0; i < range; i++) for (int i = 0; i < range; i++)
if (!_mverts[frame + i]) if (!_mverts[frame + i])
[self scaleWithFrame:frame + i scale:sc snap:sn]; [self scaleWithFrame: frame + i scale: sc snap: sn];
glPushMatrix(); glPushMatrix();
glTranslatef(position.x, position.y, position.z); glTranslatef(position.x, position.y, position.z);

View file

@ -7,17 +7,17 @@ OF_DIRECT_MEMBERS
@property (nonatomic) int rad, h, zoff, snap; @property (nonatomic) int rad, h, zoff, snap;
@property (copy, nonatomic) OFString *name; @property (copy, nonatomic) OFString *name;
+ (instancetype)infoWithRad:(int)rad + (instancetype)infoWithRad: (int)rad
h:(int)h h: (int)h
zoff:(int)zoff zoff: (int)zoff
snap:(int)snap snap: (int)snap
name:(OFString *)name; name: (OFString *)name;
- (instancetype)init OF_UNAVAILABLE; - (instancetype)init OF_UNAVAILABLE;
- (instancetype)initWithRad:(int)rad - (instancetype)initWithRad: (int)rad
h:(int)h h: (int)h
zoff:(int)zoff zoff: (int)zoff
snap:(int)snap snap: (int)snap
name:(OFString *)name; name: (OFString *)name;
@end @end
OF_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END

View file

@ -1,20 +1,24 @@
#import "MapModelInfo.h" #import "MapModelInfo.h"
@implementation MapModelInfo @implementation MapModelInfo
+ (instancetype)infoWithRad:(int)rad + (instancetype)infoWithRad: (int)rad
h:(int)h h: (int)h
zoff:(int)zoff zoff: (int)zoff
snap:(int)snap snap: (int)snap
name:(OFString *)name 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 - (instancetype)initWithRad: (int)rad
h:(int)h h: (int)h
zoff:(int)zoff zoff: (int)zoff
snap:(int)snap snap: (int)snap
name:(OFString *)name name: (OFString *)name
{ {
self = [super init]; self = [super init];

View file

@ -11,9 +11,9 @@ OF_DIRECT_MEMBERS
@property (nonatomic) int mwidth; @property (nonatomic) int mwidth;
@property (nonatomic) int menusel; @property (nonatomic) int menusel;
+ (instancetype)menuWithName:(OFString *)name; + (instancetype)menuWithName: (OFString *)name;
- (instancetype)init OF_UNAVAILABLE; - (instancetype)init OF_UNAVAILABLE;
- (instancetype)initWithName:(OFString *)name; - (instancetype)initWithName: (OFString *)name;
@end @end
OF_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END

View file

@ -1,12 +1,12 @@
#import "Menu.h" #import "Menu.h"
@implementation Menu @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]; self = [super init];

View file

@ -4,7 +4,7 @@ OF_DIRECT_MEMBERS
@interface MenuItem: OFObject @interface MenuItem: OFObject
@property (readonly, nonatomic) OFString *text, *action; @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)init OF_UNAVAILABLE;
- (instancetype)initWithText:(OFString *)text action:(OFString *)action; - (instancetype)initWithText: (OFString *)text action: (OFString *)action;
@end @end

View file

@ -1,12 +1,12 @@
#import "MenuItem.h" #import "MenuItem.h"
@implementation MenuItem @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]; self = [super init];
@ -16,11 +16,11 @@
return self; return self;
} }
- (OFComparisonResult)compare:(id)otherObject - (OFComparisonResult)compare: (id)otherObject
{ {
MenuItem *otherItem; MenuItem *otherItem;
if (![otherObject isKindOfClass:MenuItem.class]) if (![otherObject isKindOfClass: MenuItem.class])
@throw [OFInvalidArgumentException exception]; @throw [OFInvalidArgumentException exception];
int x, y; int x, y;

View file

@ -25,16 +25,16 @@ OF_DIRECT_MEMBERS
+ (void)thinkAll; + (void)thinkAll;
+ (void)renderAll; + (void)renderAll;
// TODO: Move this somewhere else // TODO: Move this somewhere else
+ (void)endSinglePlayerWithAllKilled:(bool)allKilled; + (void)endSinglePlayerWithAllKilled: (bool)allKilled;
+ (instancetype)monsterWithType:(int)type + (instancetype)monsterWithType: (int)type
yaw:(int)yaw yaw: (int)yaw
state:(int)state state: (int)state
trigger:(int)trigger trigger: (int)trigger
move:(int)move; move: (int)move;
- (instancetype)initWithType:(int)type - (instancetype)initWithType: (int)type
yaw:(int)yaw yaw: (int)yaw
state:(int)state state: (int)state
trigger:(int)trigger trigger: (int)trigger
move:(int)move; move: (int)move;
- (void)incurDamage:(int)damage fromEntity:(__kindof DynamicEntity *)d; - (void)incurDamage: (int)damage fromEntity: (__kindof DynamicEntity *)d;
@end @end

View file

@ -22,17 +22,17 @@ static int nextmonster, spawnremain, numkilled, monstertotal, mtimestart;
return monsters; return monsters;
} }
+ (instancetype)monsterWithType:(int)type + (instancetype)monsterWithType: (int)type
yaw:(int)yaw yaw: (int)yaw
state:(int)state state: (int)state
trigger:(int)trigger trigger: (int)trigger
move:(int)move move: (int)move
{ {
return [[self alloc] initWithType:type return [[self alloc] initWithType: type
yaw:yaw yaw: yaw
state:state state: state
trigger:trigger trigger: trigger
move:move]; move: move];
} }
VARF(skill, 1, 3, 10, conoutf(@"skill is now %d", skill)); VARF(skill, 1, 3, 10, conoutf(@"skill is now %d", skill));
@ -75,11 +75,11 @@ monstertypes[NUMMONSTERTYPES] = {
@"a goblin", @"monster/goblin" }, @"a goblin", @"monster/goblin" },
}; };
- (instancetype)initWithType:(int)type - (instancetype)initWithType: (int)type
yaw:(int)yaw yaw: (int)yaw
state:(int)state state: (int)state
trigger:(int)trigger trigger: (int)trigger
move:(int)move move: (int)move
{ {
self = [super init]; self = [super init];
@ -146,11 +146,11 @@ spawnmonster() // spawn a random monster according to freq distribution in DMSP
} }
} }
[monsters addObject:[Monster monsterWithType:type [monsters addObject: [Monster monsterWithType: type
yaw:rnd(360) yaw: rnd(360)
state:M_SEARCH state: M_SEARCH
trigger:1000 trigger: 1000
move:1]]; move: 1]];
} }
+ (void)resetAll + (void)resetAll
@ -171,13 +171,13 @@ spawnmonster() // spawn a random monster according to freq distribution in DMSP
if (e.type != MONSTER) if (e.type != MONSTER)
continue; continue;
Monster *m = [Monster monsterWithType:e.attr2 Monster *m = [Monster monsterWithType: e.attr2
yaw:e.attr1 yaw: e.attr1
state:M_SLEEP state: M_SLEEP
trigger:100 trigger: 100
move:0]; move: 0];
m.origin = OFMakeVector3D(e.x, e.y, e.z); m.origin = OFMakeVector3D(e.x, e.y, e.z);
[monsters addObject:m]; [monsters addObject: m];
entinmap(m); entinmap(m);
monstertotal++; monstertotal++;
} }
@ -237,7 +237,7 @@ enemylos(Monster *m, OFVector3D *v)
// decision making means tougher AI. // decision making means tougher AI.
// n = at skill 0, n/2 = at skill 10, r = added random factor // 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.monsterState = state;
self.move = moving; self.move = moving;
@ -245,7 +245,7 @@ enemylos(Monster *m, OFVector3D *v)
self.trigger = lastmillis + n - skill * (n / 16) + rnd(r + 1); self.trigger = lastmillis + n - skill * (n / 16) + rnd(r + 1);
} }
- (void)normalizeWithAngle:(float)angle - (void)normalizeWithAngle: (float)angle
{ {
while (self.yaw < angle - 180.0f) while (self.yaw < angle - 180.0f)
self.yaw += 360.0f; self.yaw += 360.0f;
@ -260,7 +260,7 @@ enemylos(Monster *m, OFVector3D *v)
self.enemy = Player.player1; self.enemy = Player.player1;
self.anger = 0; self.anger = 0;
} }
[self normalizeWithAngle:self.targetYaw]; [self normalizeWithAngle: self.targetYaw];
// slowly turn monster towards his target // slowly turn monster towards his target
if (self.targetYaw > self.yaw) { if (self.targetYaw > self.yaw) {
self.yaw += curtime * 0.5f; self.yaw += curtime * 0.5f;
@ -288,10 +288,10 @@ enemylos(Monster *m, OFVector3D *v)
(self.monsterState != M_HOME || !rnd(5))) { (self.monsterState != M_HOME || !rnd(5))) {
// patented "random walk" AI pathfinding (tm) ;) // patented "random walk" AI pathfinding (tm) ;)
self.targetYaw += 180 + rnd(180); self.targetYaw += 180 + rnd(180);
[self transitionWithState:M_SEARCH [self transitionWithState: M_SEARCH
moving:1 moving: 1
n:400 n: 400
r:1000]; r: 1000];
} }
} }
@ -305,7 +305,10 @@ enemylos(Monster *m, OFVector3D *v)
case M_ATTACKING: case M_ATTACKING:
case M_SEARCH: case M_SEARCH:
if (self.trigger < lastmillis) 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; break;
case M_SLEEP: // state classic sp monster start in, wait for visual case M_SLEEP: // state classic sp monster start in, wait for visual
@ -314,14 +317,17 @@ enemylos(Monster *m, OFVector3D *v)
OFVector3D target; OFVector3D target;
if (editmode || !enemylos(self, &target)) if (editmode || !enemylos(self, &target))
return; // skip running physics return; // skip running physics
[self normalizeWithAngle:enemyYaw]; [self normalizeWithAngle: enemyYaw];
float angle = (float)fabs(enemyYaw - self.yaw); float angle = (float)fabs(enemyYaw - self.yaw);
if (disttoenemy < 8 // the better the angle to the player, the if (disttoenemy < 8 // the better the angle to the player, the
// further the monster can see/hear // further the monster can see/hear
|| (disttoenemy < 16 && angle < 135) || || (disttoenemy < 16 && angle < 135) ||
(disttoenemy < 32 && angle < 90) || (disttoenemy < 32 && angle < 90) ||
(disttoenemy < 64 && angle < 45) || angle < 10) { (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; OFVector3D loc = self.origin;
playsound(S_GRUNT1 + rnd(2), &loc); playsound(S_GRUNT1 + rnd(2), &loc);
} }
@ -335,10 +341,10 @@ enemylos(Monster *m, OFVector3D *v)
self.lastAction = 0; self.lastAction = 0;
self.attacking = true; self.attacking = true;
shoot(self, self.attackTarget); shoot(self, self.attackTarget);
[self transitionWithState:M_ATTACKING [self transitionWithState: M_ATTACKING
moving:0 moving: 0
n:600 n: 600
r:0]; r: 0];
} }
break; break;
@ -351,10 +357,10 @@ enemylos(Monster *m, OFVector3D *v)
if (!enemylos(self, &target)) { if (!enemylos(self, &target)) {
// no visual contact anymore, let monster get // no visual contact anymore, let monster get
// as close as possible then search for player // as close as possible then search for player
[self transitionWithState:M_HOME [self transitionWithState: M_HOME
moving:1 moving: 1
n:800 n: 800
r:500]; r: 500];
} else { } else {
// the closer the monster is the more likely he // the closer the monster is the more likely he
// wants to shoot // wants to shoot
@ -364,18 +370,18 @@ enemylos(Monster *m, OFVector3D *v)
self.attackTarget = target; self.attackTarget = target;
int n = int n =
monstertypes[self.monsterType].lag; monstertypes[self.monsterType].lag;
[self transitionWithState:M_AIMING [self transitionWithState: M_AIMING
moving:0 moving: 0
n:n n: n
r:10]; r: 10];
} else { } else {
// track player some more // track player some more
int n = int n =
monstertypes[self.monsterType].rate; monstertypes[self.monsterType].rate;
[self transitionWithState:M_HOME [self transitionWithState: M_HOME
moving:1 moving: 1
n:n n: n
r:0]; r: 0];
} }
} }
} }
@ -385,10 +391,10 @@ enemylos(Monster *m, OFVector3D *v)
moveplayer(self, 1, false); // use physics to move monster 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 // a monster hit us
if ([d isKindOfClass:Monster.class]) { if ([d isKindOfClass: Monster.class]) {
Monster *m = (Monster *)d; Monster *m = (Monster *)d;
// guard for RL guys shooting themselves :) // guard for RL guys shooting themselves :)
@ -409,10 +415,10 @@ enemylos(Monster *m, OFVector3D *v)
} }
// in this state monster won't attack // in this state monster won't attack
[self transitionWithState:M_PAIN [self transitionWithState: M_PAIN
moving:0 moving: 0
n:monstertypes[self.monsterType].pain n: monstertypes[self.monsterType].pain
r:200]; r: 200];
if ((self.health -= damage) <= 0) { if ((self.health -= damage) <= 0) {
self.state = CS_DEAD; self.state = CS_DEAD;
@ -430,7 +436,7 @@ enemylos(Monster *m, OFVector3D *v)
} }
} }
+ (void)endSinglePlayerWithAllKilled:(bool)allKilled + (void)endSinglePlayerWithAllKilled: (bool)allKilled
{ {
conoutf(allKilled ? @"you have cleared the map!" conoutf(allKilled ? @"you have cleared the map!"
: @"you reached the exit!"); : @"you reached the exit!");
@ -450,10 +456,10 @@ enemylos(Monster *m, OFVector3D *v)
} }
if (monstertotal && !spawnremain && numkilled == monstertotal) if (monstertotal && !spawnremain && numkilled == monstertotal)
[self endSinglePlayerWithAllKilled:true]; [self endSinglePlayerWithAllKilled: true];
// equivalent of player entity touch, but only teleports are used // 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) if (e.type != TELEPORT)
return; return;

View file

@ -6,7 +6,7 @@
- (void)cube_setAsGLColor - (void)cube_setAsGLColor
{ {
float red, green, blue, alpha; 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); glColor4f(red, green, blue, alpha);
} }
@end @end

View file

@ -3,5 +3,5 @@
@interface OFString (Cube) @interface OFString (Cube)
@property (readonly, nonatomic) int cube_intValue; @property (readonly, nonatomic) int cube_intValue;
- (int)cube_intValueWithBase:(unsigned char)base; - (int)cube_intValueWithBase: (unsigned char)base;
@end @end

View file

@ -16,10 +16,10 @@
} }
} }
- (int)cube_intValueWithBase:(unsigned char)base - (int)cube_intValueWithBase: (unsigned char)base
{ {
@try { @try {
return [self intValueWithBase:base]; return [self intValueWithBase: base];
} @catch (OFInvalidFormatException *e) { } @catch (OFInvalidFormatException *e) {
conoutf(@"invalid value: %@", self); conoutf(@"invalid value: %@", self);
return 0; return 0;

View file

@ -14,7 +14,7 @@ static Player *player1;
return [[self alloc] init]; return [[self alloc] init];
} }
+ (void)setPlayer1:(Player *)player1_ + (void)setPlayer1: (Player *)player1_
{ {
player1 = player1_; player1 = player1_;
} }

View file

@ -7,7 +7,9 @@ OF_DIRECT_MEMBERS
@property (readonly, nonatomic) OFString *query; @property (readonly, nonatomic) OFString *query;
@property (readonly, nonatomic) ENetAddress address; @property (readonly, nonatomic) ENetAddress address;
+ (instancetype)resultWithQuery:(OFString *)query address:(ENetAddress)address; + (instancetype)resultWithQuery: (OFString *)query
address: (ENetAddress)address;
- (instancetype)init OF_UNAVAILABLE; - (instancetype)init OF_UNAVAILABLE;
- (instancetype)initWithQuery:(OFString *)query address:(ENetAddress)address; - (instancetype)initWithQuery: (OFString *)query
address: (ENetAddress)address OF_DESIGNATED_INITIALIZER;
@end @end

View file

@ -1,12 +1,12 @@
#import "ResolverResult.h" #import "ResolverResult.h"
@implementation ResolverResult @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]; self = [super init];

View file

@ -25,9 +25,9 @@ extern OFMutableArray<ResolverResult *> *resolverresults;
enet_address_set_host(&address, _query.UTF8String); enet_address_set_host(&address, _query.UTF8String);
@synchronized(ResolverThread.class) { @synchronized(ResolverThread.class) {
[resolverresults [resolverresults addObject:
addObject:[ResolverResult resultWithQuery:_query [ResolverResult resultWithQuery: _query
address:address]]; address: address]];
_query = NULL; _query = NULL;
_starttime = 0; _starttime = 0;

View file

@ -11,7 +11,7 @@ OF_DIRECT_MEMBERS
@property (nonatomic) int mode, numplayers, ping, protocol, minremain; @property (nonatomic) int mode, numplayers, ping, protocol, minremain;
@property (nonatomic) ENetAddress address; @property (nonatomic) ENetAddress address;
+ (instancetype)infoWithName:(OFString *)name; + (instancetype)infoWithName: (OFString *)name;
- (instancetype)init OF_UNAVAILABLE; - (instancetype)init OF_UNAVAILABLE;
- (instancetype)initWithName:(OFString *)name; - (instancetype)initWithName: (OFString *)name;
@end @end

View file

@ -3,12 +3,12 @@
#include "cube.h" #include "cube.h"
@implementation ServerInfo @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]; self = [super init];
@ -27,9 +27,9 @@
return self; return self;
} }
- (OFComparisonResult)compare:(ServerInfo *)otherObject - (OFComparisonResult)compare: (ServerInfo *)otherObject
{ {
if (![otherObject isKindOfClass:ServerInfo.class]) if (![otherObject isKindOfClass: ServerInfo.class])
@throw [OFInvalidArgumentException exception]; @throw [OFInvalidArgumentException exception];
if (_ping > otherObject.ping) if (_ping > otherObject.ping)
@ -37,6 +37,6 @@
if (_ping < otherObject.ping) if (_ping < otherObject.ping)
return OFOrderedAscending; return OFOrderedAscending;
return [_name compare:otherObject.name]; return [_name compare: otherObject.name];
} }
@end @end

View file

@ -2,76 +2,84 @@
OF_ASSUME_NONNULL_BEGIN OF_ASSUME_NONNULL_BEGIN
#define VARP(name, min_, cur, max_) \ #define VARP(name, min_, cur, max_) \
int name = cur; \ int name = cur; \
\ \
OF_CONSTRUCTOR() \ OF_CONSTRUCTOR() \
{ \ { \
enqueueInit(^{ \ enqueueInit(^ { \
Variable *variable = \ Variable *variable = \
[Variable variableWithName:@ #name \ [Variable variableWithName: @#name \
min:min_ \ min: min_ \
max:max_ \ max: max_ \
storage:&name \ storage: &name \
function:NULL \ function: NULL \
persisted:true]; \ persisted: true]; \
Identifier.identifiers[@ #name] = variable; \ Identifier.identifiers[@#name] = variable; \
}); \ }); \
} }
#define VAR(name, min_, cur, max_) \ #define VAR(name, min_, cur, max_) \
int name = cur; \ int name = cur; \
\ \
OF_CONSTRUCTOR() \ OF_CONSTRUCTOR() \
{ \ { \
enqueueInit(^{ \ enqueueInit(^ { \
Variable *variable = \ Variable *variable = \
[Variable variableWithName:@ #name \ [Variable variableWithName: @#name \
min:min_ \ min: min_ \
max:max_ \ max: max_ \
storage:&name \ storage: &name \
function:NULL \ function: NULL \
persisted:false]; \ persisted: false]; \
Identifier.identifiers[@ #name] = variable; \ 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; \
} }
#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; }
@interface Variable: Identifier @interface Variable: Identifier
@property (direct, readonly, nonatomic) int min, max; @property (direct, readonly, nonatomic) int min, max;
@ -79,22 +87,22 @@ OF_ASSUME_NONNULL_BEGIN
@property (direct, readonly, nullable, nonatomic) void (*function)(); @property (direct, readonly, nullable, nonatomic) void (*function)();
@property (readonly, nonatomic) bool persisted; @property (readonly, nonatomic) bool persisted;
+ (instancetype)variableWithName:(OFString *)name + (instancetype)variableWithName: (OFString *)name
min:(int)min min: (int)min
max:(int)max max: (int)max
storage:(int *)storage storage: (int *)storage
function:(void (*_Nullable)())function function: (void (*_Nullable)())function
persisted:(bool)persisted OF_DIRECT; persisted: (bool)persisted OF_DIRECT;
- (instancetype)initWithName:(OFString *)name OF_UNAVAILABLE; - (instancetype)initWithName: (OFString *)name OF_UNAVAILABLE;
- (instancetype)initWithName:(OFString *)name - (instancetype)initWithName: (OFString *)name
min:(int)min min: (int)min
max:(int)max max: (int)max
storage:(int *)storage storage: (int *)storage
function:(void (*_Nullable)())function function: (void (*_Nullable)())function
persisted:(bool)persisted OF_DESIGNATED_INITIALIZER persisted: (bool)persisted OF_DESIGNATED_INITIALIZER
OF_DIRECT; OF_DIRECT;
- (void)printValue OF_DIRECT; - (void)printValue OF_DIRECT;
- (void)setValue:(int)value OF_DIRECT; - (void)setValue: (int)value OF_DIRECT;
@end @end
OF_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END

View file

@ -3,29 +3,29 @@
#include "cube.h" #include "cube.h"
@implementation Variable @implementation Variable
+ (instancetype)variableWithName:(OFString *)name + (instancetype)variableWithName: (OFString *)name
min:(int)min min: (int)min
max:(int)max max: (int)max
storage:(int *)storage storage: (int *)storage
function:(void (*__cdecl)())function function: (void (*__cdecl)())function
persisted:(bool)persisted persisted: (bool)persisted
{ {
return [[self alloc] initWithName:name return [[self alloc] initWithName: name
min:min min: min
max:max max: max
storage:storage storage: storage
function:function function: function
persisted:persisted]; persisted: persisted];
} }
- (instancetype)initWithName:(OFString *)name - (instancetype)initWithName: (OFString *)name
min:(int)min min: (int)min
max:(int)max max: (int)max
storage:(int *)storage storage: (int *)storage
function:(void (*__cdecl)())function function: (void (*__cdecl)())function
persisted:(bool)persisted persisted: (bool)persisted
{ {
self = [super initWithName:name]; self = [super initWithName: name];
_min = min; _min = min;
_max = max; _max = max;
@ -41,7 +41,7 @@
conoutf(@"%@ = %d", self.name, *_storage); conoutf(@"%@ = %d", self.name, *_storage);
} }
- (void)setValue:(int)value - (void)setValue: (int)value
{ {
bool outOfRange = false; bool outOfRange = false;

View file

@ -51,21 +51,21 @@ renderclient(
// mdl = (((int)d>>6)&1)+1; // mdl = (((int)d>>6)&1)+1;
// mz = d.o.z-d.eyeHeight+0.2f; // mz = d.o.z-d.eyeHeight+0.2f;
// scale = 1.2f; // scale = 1.2f;
} else if (d.state == CS_EDITING) { } else if (d.state == CS_EDITING)
n = 16; n = 16;
} else if (d.state == CS_LAGGED) { else if (d.state == CS_LAGGED)
n = 17; n = 17;
} else if ([d isKindOfClass:Monster.class] && else if ([d isKindOfClass: Monster.class] &&
((Monster *)d).monsterState == M_ATTACKING) { ((Monster *)d).monsterState == M_ATTACKING)
n = 8; n = 8;
} else if ([d isKindOfClass:Monster.class] && else if ([d isKindOfClass: Monster.class] &&
((Monster *)d).monsterState == M_PAIN) { ((Monster *)d).monsterState == M_PAIN)
n = 10; n = 10;
} else if ((!d.move && !d.strafe) || !d.moving) { else if ((!d.move && !d.strafe) || !d.moving)
n = 12; n = 12;
} else if (!d.onFloor && d.timeInAir > 100) { else if (!d.onFloor && d.timeInAir > 100)
n = 18; n = 18;
} else { else {
n = 14; n = 14;
speed = 1200 / d.maxSpeed * scale; speed = 1200 / d.maxSpeed * scale;
if (hellpig) if (hellpig)
@ -86,14 +86,13 @@ extern int democlientnum;
void void
renderclients() renderclients()
{ {
[players [players enumerateObjectsUsingBlock: ^ (Player *player, size_t i,
enumerateObjectsUsingBlock:^(Player *player, size_t i, bool *stop) { bool *stop) {
if ([player isKindOfClass:Player.class] && if ([player isKindOfClass: Player.class] &&
(!demoplayback || i != democlientnum)) (!demoplayback || i != democlientnum))
renderclient(player, renderclient(player, isteam(Player.player1.team,
isteam(Player.player1.team, [player team]), [player team]), @"monster/ogro", false, 1.0f);
@"monster/ogro", false, 1.0f); }];
}];
} }
// creation of scoreboard pseudo-menu // creation of scoreboard pseudo-menu
@ -112,16 +111,16 @@ static OFMutableArray<OFString *> *scoreLines;
static void static void
renderscore(Player *d) renderscore(Player *d)
{ {
OFString *lag = [OFString stringWithFormat:@"%d", d.lag]; OFString *lag = [OFString stringWithFormat: @"%d", d.lag];
OFString *name = [OFString stringWithFormat:@"(%@)", d.name]; OFString *name = [OFString stringWithFormat: @"(%@)", d.name];
OFString *line = [OFString stringWithFormat:@"%d\t%@\t%d\t%@\t%@", OFString *line = [OFString stringWithFormat: @"%d\t%@\t%d\t%@\t%@",
d.frags, (d.state == CS_LAGGED ? @"LAG" : lag), d.ping, d.team, d.frags, (d.state == CS_LAGGED ? @"LAG" : lag), d.ping, d.team,
(d.state == CS_DEAD ? name : d.name)]; (d.state == CS_DEAD ? name : d.name)];
if (scoreLines == nil) if (scoreLines == nil)
scoreLines = [[OFMutableArray alloc] init]; scoreLines = [[OFMutableArray alloc] init];
[scoreLines addObject:line]; [scoreLines addObject: line];
menumanual(0, scoreLines.count - 1, line); menumanual(0, scoreLines.count - 1, line);
} }
@ -135,7 +134,7 @@ static void
addteamscore(Player *d) addteamscore(Player *d)
{ {
for (size_t i = 0; i < teamsUsed; i++) { for (size_t i = 0; i < teamsUsed; i++) {
if ([teamName[i] isEqual:d.team]) { if ([teamName[i] isEqual: d.team]) {
teamScore[i] += d.frags; teamScore[i] += d.frags;
return; return;
} }
@ -157,20 +156,20 @@ renderscores()
if (!demoplayback) if (!demoplayback)
renderscore(Player.player1); renderscore(Player.player1);
for (Player *player in players) for (Player *player in players)
if ([player isKindOfClass:Player.class]) if ([player isKindOfClass: Player.class])
renderscore(player); renderscore(player);
sortmenu(); sortmenu();
if (m_teammode) { if (m_teammode) {
teamsUsed = 0; teamsUsed = 0;
for (Player *player in players) for (Player *player in players)
if ([player isKindOfClass:Player.class]) if ([player isKindOfClass: Player.class])
addteamscore(player); addteamscore(player);
if (!demoplayback) if (!demoplayback)
addteamscore(Player.player1); addteamscore(Player.player1);
OFMutableString *teamScores = [OFMutableString string]; OFMutableString *teamScores = [OFMutableString string];
for (size_t j = 0; j < teamsUsed; j++) for (size_t j = 0; j < teamsUsed; j++)
[teamScores appendFormat:@"[ %@: %d ]", teamName[j], [teamScores appendFormat:
teamScore[j]]; @"[ %@: %d ]", teamName[j], teamScore[j]];
menumanual(0, scoreLines.count, @""); menumanual(0, scoreLines.count, @"");
menumanual(0, scoreLines.count + 1, teamScores); menumanual(0, scoreLines.count + 1, teamScores);
} }
@ -178,7 +177,7 @@ renderscores()
// sendmap/getmap commands, should be replaced by more intuitive map downloading // 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) if (mapname.length > 0)
save_world(mapname); save_world(mapname);
changemap(mapname); changemap(mapname);
@ -204,14 +203,12 @@ COMMAND(sendmap, ARG_1STR, (^(OFString *mapname) {
enet_packet_resize(packet, p - start); enet_packet_resize(packet, p - start);
sendpackettoserv(packet); sendpackettoserv(packet);
conoutf(@"sending map %@ to server...", mapname); conoutf(@"sending map %@ to server...", mapname);
OFString *msg = OFString *msg = [OFString stringWithFormat:
[OFString stringWithFormat:@"[map %@ uploaded to server, " @"[map %@ uploaded to server, \"getmap\" to receive it]", mapname];
@"\"getmap\" to receive it]",
mapname];
toserver(msg); toserver(msg);
})) }))
COMMAND(getmap, ARG_NONE, ^{ COMMAND(getmap, ARG_NONE, ^ {
ENetPacket *packet = ENetPacket *packet =
enet_packet_create(NULL, MAXTRANS, ENET_PACKET_FLAG_RELIABLE); enet_packet_create(NULL, MAXTRANS, ENET_PACKET_FLAG_RELIABLE);
unsigned char *start = packet->data; unsigned char *start = packet->data;

View file

@ -13,7 +13,7 @@
int nextmode = 0; // nextmode becomes gamemode after next map load int nextmode = 0; // nextmode becomes gamemode after next map load
VAR(gamemode, 1, 0, 0); VAR(gamemode, 1, 0, 0);
COMMAND(mode, ARG_1INT, ^(int n) { COMMAND(mode, ARG_1INT, ^ (int n) {
addmsg(1, 2, SV_GAMEMODE, nextmode = n); addmsg(1, 2, SV_GAMEMODE, nextmode = n);
}) })
@ -53,7 +53,7 @@ arenacount(Player *d, int *alive, int *dead, OFString **lastteam, bool *oneteam)
{ {
if (d.state != CS_DEAD) { if (d.state != CS_DEAD) {
(*alive)++; (*alive)++;
if (![*lastteam isEqual:d.team]) if (![*lastteam isEqual: d.team])
*oneteam = false; *oneteam = false;
*lastteam = d.team; *lastteam = d.team;
} else } else
@ -102,22 +102,22 @@ extern int democlientnum;
void void
otherplayers() otherplayers()
{ {
[players [players enumerateObjectsUsingBlock: ^ (Player *player, size_t i,
enumerateObjectsUsingBlock:^(Player *player, size_t i, bool *stop) { bool *stop) {
if ([player isKindOfClass:Player.class]) if ([player isKindOfClass: Player.class])
return; return;
const int lagtime = lastmillis - player.lastUpdate; const int lagtime = lastmillis - player.lastUpdate;
if (lagtime > 1000 && player.state == CS_ALIVE) { if (lagtime > 1000 && player.state == CS_ALIVE) {
player.state = CS_LAGGED; player.state = CS_LAGGED;
return; return;
} }
if (lagtime && player.state != CS_DEAD && if (lagtime && player.state != CS_DEAD &&
(!demoplayback || i != democlientnum)) (!demoplayback || i != democlientnum))
// use physics to extrapolate player position // use physics to extrapolate player position
moveplayer(player, 2, false); moveplayer(player, 2, false);
}]; }];
} }
void void
@ -140,7 +140,7 @@ respawn()
int sleepwait = 0; int sleepwait = 0;
static OFString *sleepcmd = nil; 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; sleepwait = msec.cube_intValue + lastmillis;
sleepcmd = cmd; sleepcmd = cmd;
}) })
@ -237,12 +237,12 @@ spawnplayer(Player *d)
// movement input code // movement input code
#define dir(name, v, d, s, os) \ #define dir(name, v, d, s, os) \
COMMAND(name, ARG_DOWN, ^(bool isDown) { \ COMMAND(name, ARG_DOWN, ^ (bool isDown) { \
Player *player1 = Player.player1; \ Player *player1 = Player.player1; \
player1.s = isDown; \ player1.s = isDown; \
player1.v = isDown ? d : (player1.os ? -(d) : 0); \ player1.v = isDown ? d : (player1.os ? -(d) : 0); \
player1.lastMove = lastmillis; \ player1.lastMove = lastmillis; \
}) })
dir(backward, move, -1, k_down, k_up); dir(backward, move, -1, k_down, k_up);
@ -250,7 +250,7 @@ dir(forward, move, 1, k_up, k_down);
dir(left, strafe, 1, k_left, k_right); dir(left, strafe, 1, k_left, k_right);
dir(right, strafe, -1, k_right, k_left); dir(right, strafe, -1, k_right, k_left);
COMMAND(attack, ARG_DOWN, ^(bool on) { COMMAND(attack, ARG_DOWN, ^ (bool on) {
if (intermission) if (intermission)
return; return;
if (editmode) if (editmode)
@ -259,12 +259,12 @@ COMMAND(attack, ARG_DOWN, ^(bool on) {
respawn(); respawn();
}) })
COMMAND(jump, ARG_DOWN, ^(bool on) { COMMAND(jump, ARG_DOWN, ^ (bool on) {
if (!intermission && (Player.player1.jumpNext = on)) if (!intermission && (Player.player1.jumpNext = on))
respawn(); respawn();
}) })
COMMAND(showscores, ARG_DOWN, ^(bool isDown) { COMMAND(showscores, ARG_DOWN, ^ (bool isDown) {
showscores(isDown); showscores(isDown);
}) })
@ -376,7 +376,7 @@ getclient(int cn) // ensure valid entity
} }
while (cn >= players.count) while (cn >= players.count)
[players addObject:[OFNull null]]; [players addObject: [OFNull null]];
id player = players[cn]; id player = players[cn];
if (player == [OFNull null]) { if (player == [OFNull null]) {
@ -393,7 +393,7 @@ setclient(int cn, id client)
if (cn < 0 || cn >= MAXCLIENTS) if (cn < 0 || cn >= MAXCLIENTS)
neterr(@"clientnum"); neterr(@"clientnum");
while (cn >= players.count) while (cn >= players.count)
[players addObject:[OFNull null]]; [players addObject: [OFNull null]];
players[cn] = client; players[cn] = client;
} }
@ -418,7 +418,7 @@ startmap(OFString *name) // called just after a map load
spawnplayer(Player.player1); spawnplayer(Player.player1);
Player.player1.frags = 0; Player.player1.frags = 0;
for (Player *player in players) for (Player *player in players)
if ([player isKindOfClass:Player.class]) if ([player isKindOfClass: Player.class])
player.frags = 0; player.frags = 0;
resetspawns(); resetspawns();
clientmap = name; clientmap = name;
@ -433,6 +433,6 @@ startmap(OFString *name) // called just after a map load
conoutf(@"game mode is %@", modestr(gamemode)); conoutf(@"game mode is %@", modestr(gamemode));
} }
COMMAND(map, ARG_1STR, ^(OFString *name) { COMMAND(map, ARG_1STR, ^ (OFString *name) {
changemap(name); changemap(name);
}) })

View file

@ -68,12 +68,12 @@ newname(OFString *name)
c2sinit = false; c2sinit = false;
if (name.length > 16) if (name.length > 16)
name = [name substringToIndex:16]; name = [name substringToIndex: 16];
Player.player1.name = name; Player.player1.name = name;
} }
COMMAND(name, ARG_1STR, ^(OFString *name) { COMMAND(name, ARG_1STR, ^ (OFString *name) {
newname(name); newname(name);
}) })
@ -83,20 +83,20 @@ newteam(OFString *name)
c2sinit = false; c2sinit = false;
if (name.length > 5) if (name.length > 5)
name = [name substringToIndex:5]; name = [name substringToIndex: 5];
Player.player1.team = name; Player.player1.team = name;
} }
COMMAND(team, ARG_1STR, ^(OFString *name) { COMMAND(team, ARG_1STR, ^ (OFString *name) {
newteam(name); newteam(name);
}) })
void void
writeclientinfo(OFStream *stream) writeclientinfo(OFStream *stream)
{ {
[stream writeFormat:@"name \"%@\"\nteam \"%@\"\n", Player.player1.name, [stream writeFormat: @"name \"%@\"\nteam \"%@\"\n",
Player.player1.team]; Player.player1.name, Player.player1.team];
} }
void void
@ -185,16 +185,16 @@ toserver(OFString *text)
ctext = text; ctext = text;
} }
COMMAND(echo, ARG_VARI, ^(OFString *text) { COMMAND(echo, ARG_VARI, ^ (OFString *text) {
conoutf(@"%@", text); conoutf(@"%@", text);
}) })
COMMAND(say, ARG_VARI, ^(OFString *text) { COMMAND(say, ARG_VARI, ^ (OFString *text) {
toserver(text); toserver(text);
}) })
COMMAND(connect, ARG_1STR, ^(OFString *servername) { COMMAND(connect, ARG_1STR, ^ (OFString *servername) {
connects(servername); connects(servername);
}) })
COMMAND(disconnect, ARG_NONE, ^{ COMMAND(disconnect, ARG_NONE, ^ {
trydisconnect(); trydisconnect();
}) })
@ -215,17 +215,17 @@ addmsg(int rel, int num, int type, ...)
return; return;
} }
OFMutableData *msg = [OFMutableData dataWithItemSize:sizeof(int) OFMutableData *msg = [OFMutableData dataWithItemSize: sizeof(int)
capacity:num + 2]; capacity: num + 2];
[msg addItem:&num]; [msg addItem: &num];
[msg addItem:&rel]; [msg addItem: &rel];
[msg addItem:&type]; [msg addItem: &type];
va_list marker; va_list marker;
va_start(marker, type); va_start(marker, type);
for (int i = 0; i < num - 1; i++) { for (int i = 0; i < num - 1; i++) {
int tmp = va_arg(marker, int); int tmp = va_arg(marker, int);
[msg addItem:&tmp]; [msg addItem: &tmp];
} }
va_end(marker); va_end(marker);
[msg makeImmutable]; [msg makeImmutable];
@ -233,7 +233,7 @@ addmsg(int rel, int num, int type, ...)
if (messages == nil) if (messages == nil)
messages = [[OFMutableArray alloc] init]; messages = [[OFMutableArray alloc] init];
[messages addObject:msg]; [messages addObject: msg];
} }
void void
@ -249,7 +249,7 @@ bool senditemstoserver =
false; // after a map change, since server doesn't have map data false; // after a map change, since server doesn't have map data
OFString *clientpassword; OFString *clientpassword;
COMMAND(password, ARG_1STR, ^(OFString *p) { COMMAND(password, ARG_1STR, ^ (OFString *p) {
clientpassword = p; clientpassword = p;
}) })
@ -317,10 +317,9 @@ c2sinfo(Player *d)
putint(&p, (int)(d.velocity.y * DVF)); putint(&p, (int)(d.velocity.y * DVF));
putint(&p, (int)(d.velocity.z * DVF)); putint(&p, (int)(d.velocity.z * DVF));
// pack rest in 1 byte: strafe:2, move:2, onFloor:1, state:3 // pack rest in 1 byte: strafe:2, move:2, onFloor:1, state:3
putint(&p, putint(&p, (d.strafe & 3) | ((d.move & 3) << 2) |
(d.strafe & 3) | ((d.move & 3) << 2) | (((int)d.onFloor) << 4) |
(((int)d.onFloor) << 4) | ((editmode ? CS_EDITING : d.state) << 5));
((editmode ? CS_EDITING : d.state) << 5));
if (senditemstoserver) { if (senditemstoserver) {
packet->flags = ENET_PACKET_FLAG_RELIABLE; packet->flags = ENET_PACKET_FLAG_RELIABLE;
@ -349,10 +348,10 @@ c2sinfo(Player *d)
} }
for (OFData *msg in messages) { for (OFData *msg in messages) {
// send messages collected during the previous frames // send messages collected during the previous frames
if (*(int *)[msg itemAtIndex:1]) if (*(int *)[msg itemAtIndex: 1])
packet->flags = ENET_PACKET_FLAG_RELIABLE; packet->flags = ENET_PACKET_FLAG_RELIABLE;
for (int i = 0; i < *(int *)[msg itemAtIndex:0]; i++) for (int i = 0; i < *(int *)[msg itemAtIndex: 0]; i++)
putint(&p, *(int *)[msg itemAtIndex:i + 2]); putint(&p, *(int *)[msg itemAtIndex: i + 2]);
} }
[messages removeAllObjects]; [messages removeAllObjects];
if (lastmillis - lastping > 250) { if (lastmillis - lastping > 250) {

View file

@ -174,10 +174,10 @@ localservertoclient(unsigned char *buf, int len)
// server requests next map // server requests next map
case SV_MAPRELOAD: { case SV_MAPRELOAD: {
getint(&p); getint(&p);
OFString *nextmapalias = [OFString OFString *nextmapalias = [OFString stringWithFormat:
stringWithFormat:@"nextmap_%@", getclientmap()]; @"nextmap_%@", getclientmap()];
OFString *map = // look up map in the cycle
getalias(nextmapalias); // look up map in the cycle OFString *map = getalias(nextmapalias);
changemap(map != nil ? map : getclientmap()); changemap(map != nil ? map : getclientmap());
break; break;
} }
@ -188,7 +188,7 @@ localservertoclient(unsigned char *buf, int len)
sgetstr(); sgetstr();
if (d_.name.length > 0) { if (d_.name.length > 0) {
// already connected // already connected
if (![d_.name isEqual:@(text)]) if (![d_.name isEqual: @(text)])
conoutf(@"%@ is now known as %s", conoutf(@"%@ is now known as %s",
d_.name, text); d_.name, text);
} else { } else {
@ -279,7 +279,7 @@ localservertoclient(unsigned char *buf, int len)
} }
case SV_FRAGS: case SV_FRAGS:
OFAssert([players[cn] isKindOfClass:Player.class]); OFAssert([players[cn] isKindOfClass: Player.class]);
((Player *)players[cn]).frags = getint(&p); ((Player *)players[cn]).frags = getint(&p);
break; break;
@ -342,7 +342,7 @@ localservertoclient(unsigned char *buf, int len)
while (ents.count <= i) { while (ents.count <= i) {
Entity *e = [Entity entity]; Entity *e = [Entity entity];
e.type = NOTUSED; e.type = NOTUSED;
[ents addObject:e]; [ents addObject: e];
} }
int to = ents[i].type; int to = ents[i].type;
@ -372,7 +372,7 @@ localservertoclient(unsigned char *buf, int len)
break; break;
case SV_CLIENTPING: case SV_CLIENTPING:
OFAssert([players[cn] isKindOfClass:Player.class]); OFAssert([players[cn] isKindOfClass: Player.class]);
((Player *)players[cn]).ping = getint(&p); ((Player *)players[cn]).ping = getint(&p);
break; break;

View file

@ -21,11 +21,11 @@ alias(OFString *name, OFString *action)
Alias *alias = Identifier.identifiers[name]; Alias *alias = Identifier.identifiers[name];
if (alias == nil) if (alias == nil)
Identifier.identifiers[name] = [Alias aliasWithName:name Identifier.identifiers[name] = [Alias aliasWithName: name
action:action action: action
persisted:true]; persisted: true];
else { else {
if ([alias isKindOfClass:Alias.class]) if ([alias isKindOfClass: Alias.class])
alias.action = action; alias.action = action;
else else
conoutf( conoutf(
@ -33,7 +33,7 @@ alias(OFString *name, OFString *action)
} }
} }
COMMAND(alias, ARG_2STR, ^(OFString *name, OFString *action) { COMMAND(alias, ARG_2STR, ^ (OFString *name, OFString *action) {
alias(name, action); alias(name, action);
}) })
@ -42,7 +42,7 @@ setvar(OFString *name, int i)
{ {
Variable *variable = Identifier.identifiers[name]; Variable *variable = Identifier.identifiers[name];
if ([variable isKindOfClass:Variable.class]) if ([variable isKindOfClass: Variable.class])
*variable.storage = i; *variable.storage = i;
} }
@ -51,7 +51,7 @@ getvar(OFString *name)
{ {
Variable *variable = Identifier.identifiers[name]; Variable *variable = Identifier.identifiers[name];
if ([variable isKindOfClass:Variable.class]) if ([variable isKindOfClass: Variable.class])
return *variable.storage; return *variable.storage;
return 0; return 0;
@ -68,7 +68,7 @@ getalias(OFString *name)
{ {
Alias *alias = Identifier.identifiers[name]; Alias *alias = Identifier.identifiers[name];
if ([alias isKindOfClass:Alias.class]) if ([alias isKindOfClass: Alias.class])
return alias.action; return alias.action;
return nil; return nil;
@ -98,8 +98,8 @@ parseexp(char **p, int right)
if (left == '(') { if (left == '(') {
OFString *t; OFString *t;
@try { @try {
t = [OFString t = [OFString stringWithFormat:
stringWithFormat:@"%d", execute(@(s), true)]; @"%d", execute(@(s), true)];
} @finally { } @finally {
free(s); free(s);
} }
@ -140,14 +140,15 @@ OFString *
lookup(OFString *n) lookup(OFString *n)
{ {
__kindof Identifier *identifier = __kindof Identifier *identifier =
Identifier.identifiers[[n substringFromIndex:1]]; Identifier.identifiers[[n substringFromIndex: 1]];
if ([identifier isKindOfClass:Variable.class]) { if ([identifier isKindOfClass: Variable.class]) {
return [OFString stringWithFormat:@"%d", *[identifier storage]]; return [OFString stringWithFormat:
} else if ([identifier isKindOfClass:Alias.class]) @"%d", *[identifier storage]];
} else if ([identifier isKindOfClass: Alias.class])
return [identifier action]; return [identifier action];
conoutf(@"unknown alias lookup: %@", [n substringFromIndex:1]); conoutf(@"unknown alias lookup: %@", [n substringFromIndex: 1]);
return n; return n;
} }
@ -157,7 +158,7 @@ executeIdentifier(__kindof Identifier *identifier,
{ {
if (identifier == nil) { if (identifier == nil) {
@try { @try {
return [arguments[0] intValueWithBase:0]; return [arguments[0] intValueWithBase: 0];
} @catch (OFInvalidFormatException *e) { } @catch (OFInvalidFormatException *e) {
conoutf(@"unknown command: %@", arguments[0]); conoutf(@"unknown command: %@", arguments[0]);
return 0; return 0;
@ -167,12 +168,12 @@ executeIdentifier(__kindof Identifier *identifier,
} }
} }
if ([identifier isKindOfClass:Command.class]) if ([identifier isKindOfClass: Command.class])
// game defined commands use very ad-hoc function signature, // game defined commands use very ad-hoc function signature,
// and just call it // 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) if (!isDown)
return 0; return 0;
@ -180,16 +181,16 @@ executeIdentifier(__kindof Identifier *identifier,
if (arguments.count < 2 || arguments[1].length == 0) if (arguments.count < 2 || arguments[1].length == 0)
[identifier printValue]; [identifier printValue];
else else
[identifier [identifier setValue:
setValue:[arguments[1] cube_intValueWithBase:0]]; [arguments[1] cube_intValueWithBase: 0]];
} }
if ([identifier isKindOfClass:Alias.class]) { if ([identifier isKindOfClass: Alias.class]) {
// alias, also used as functions and (global) variables // alias, also used as functions and (global) variables
for (int i = 1; i < arguments.count; i++) { for (int i = 1; i < arguments.count; i++) {
// set any arguments as (global) arg values so // set any arguments as (global) arg values so
// functions can access them // functions can access them
OFString *t = [OFString stringWithFormat:@"arg%d", i]; OFString *t = [OFString stringWithFormat: @"arg%d", i];
alias(t, arguments[i]); alias(t, arguments[i]);
} }
@ -239,8 +240,8 @@ execute(OFString *string, bool isDown)
cont = *p++ != 0; cont = *p++ != 0;
OFString *c = w[0]; OFString *c = w[0];
// strip irc-style command prefix // strip irc-style command prefix
if ([c hasPrefix:@"/"]) { if ([c hasPrefix: @"/"]) {
c = [c substringFromIndex:1]; c = [c substringFromIndex: 1];
w[0] = c; w[0] = c;
} }
// empty statement // empty statement
@ -248,7 +249,7 @@ execute(OFString *string, bool isDown)
continue; continue;
val = executeIdentifier(Identifier.identifiers[c], val = executeIdentifier(Identifier.identifiers[c],
[OFArray arrayWithObjects:w count:numargs], isDown); [OFArray arrayWithObjects: w count: numargs], isDown);
} }
return val; return val;
@ -267,8 +268,8 @@ resetcomplete()
void void
complete(OFMutableString *s) complete(OFMutableString *s)
{ {
if (![s hasPrefix:@"/"]) if (![s hasPrefix: @"/"])
[s insertString:@"/" atIndex:0]; [s insertString: @"/" atIndex: 0];
if (s.length == 1) if (s.length == 1)
return; return;
@ -279,13 +280,13 @@ complete(OFMutableString *s)
} }
__block int idx = 0; __block int idx = 0;
[Identifier.identifiers enumerateKeysAndObjectsUsingBlock:^( [Identifier.identifiers enumerateKeysAndObjectsUsingBlock:
OFString *name, __kindof Identifier *identifier, bool *stop) { ^ (OFString *name, __kindof Identifier *identifier, bool *stop) {
if (strncmp(identifier.name.UTF8String, s.UTF8String + 1, if (strncmp(identifier.name.UTF8String, s.UTF8String + 1,
completesize) == 0 && completesize) == 0 && idx++ == completeidx)
idx++ == completeidx) [s replaceCharactersInRange: OFMakeRange(
[s replaceCharactersInRange:OFMakeRange(1, s.length - 1) 1, s.length - 1)
withString:identifier.name]; withString: identifier.name];
}]; }];
completeidx++; completeidx++;
@ -299,7 +300,7 @@ execfile(OFIRI *cfgfile)
{ {
OFString *command; OFString *command;
@try { @try {
command = [OFString stringWithContentsOfIRI:cfgfile]; command = [OFString stringWithContentsOfIRI: cfgfile];
} @catch (OFOpenItemFailedException *e) { } @catch (OFOpenItemFailedException *e) {
return false; return false;
} @catch (OFReadFailedException *e) { } @catch (OFReadFailedException *e) {
@ -314,13 +315,13 @@ void
exec(OFString *cfgfile) exec(OFString *cfgfile)
{ {
if (!execfile([Cube.sharedInstance.userDataIRI if (!execfile([Cube.sharedInstance.userDataIRI
IRIByAppendingPathComponent:cfgfile]) && IRIByAppendingPathComponent: cfgfile]) &&
!execfile([Cube.sharedInstance.gameDataIRI !execfile([Cube.sharedInstance.gameDataIRI
IRIByAppendingPathComponent:cfgfile])) IRIByAppendingPathComponent: cfgfile]))
conoutf(@"could not read \"%@\"", cfgfile); conoutf(@"could not read \"%@\"", cfgfile);
} }
COMMAND(exec, ARG_1STR, ^(OFString *cfgfile) { COMMAND(exec, ARG_1STR, ^ (OFString *cfgfile) {
exec(cfgfile); exec(cfgfile);
}) })
@ -330,50 +331,52 @@ writecfg()
OFStream *stream; OFStream *stream;
@try { @try {
OFIRI *IRI = [Cube.sharedInstance.userDataIRI OFIRI *IRI = [Cube.sharedInstance.userDataIRI
IRIByAppendingPathComponent:@"config.cfg"]; IRIByAppendingPathComponent: @"config.cfg"];
stream = [[OFIRIHandler handlerForIRI:IRI] openItemAtIRI:IRI stream = [[OFIRIHandler handlerForIRI: IRI]
mode:@"w"]; openItemAtIRI: IRI
mode: @"w"];
} @catch (id e) { } @catch (id e) {
return; return;
} }
[stream writeString:@"// automatically written on exit, do not modify\n" [stream writeString:
@"// delete this file to have defaults.cfg " @"// automatically written on exit, do not modify\n"
@"overwrite these settings\n" @"// delete this file to have defaults.cfg overwrite these "
@"// modify settings in game, or put settings in " @"settings\n"
@"autoexec.cfg to override anything\n" @"// modify settings in game, or put settings in autoexec.cfg to "
@"\n"]; @"override anything\n"
@"\n"];
writeclientinfo(stream); writeclientinfo(stream);
[stream writeString:@"\n"]; [stream writeString: @"\n"];
[Identifier.identifiers enumerateKeysAndObjectsUsingBlock:^( [Identifier.identifiers enumerateKeysAndObjectsUsingBlock:
OFString *name, __kindof Identifier *identifier, bool *stop) { ^ (OFString *name, __kindof Identifier *identifier, bool *stop) {
if (![identifier isKindOfClass:Variable.class] || if (![identifier isKindOfClass: Variable.class] ||
![identifier persisted]) ![identifier persisted])
return; return;
[stream writeFormat:@"%@ %d\n", identifier.name, [stream writeFormat:
*[identifier storage]]; @"%@ %d\n", identifier.name, *[identifier storage]];
}]; }];
[stream writeString:@"\n"]; [stream writeString: @"\n"];
writebinds(stream); writebinds(stream);
[stream writeString:@"\n"]; [stream writeString: @"\n"];
[Identifier.identifiers enumerateKeysAndObjectsUsingBlock:^( [Identifier.identifiers enumerateKeysAndObjectsUsingBlock:
OFString *name, __kindof Identifier *identifier, bool *stop) { ^ (OFString *name, Alias *alias, bool *stop) {
if (![identifier isKindOfClass:Alias.class] || if (![alias isKindOfClass: Alias.class] ||
[identifier.name hasPrefix:@"nextmap_"]) [alias.name hasPrefix: @"nextmap_"])
return; return;
[stream writeFormat:@"alias \"%@\" [%@]\n", identifier.name, [stream writeFormat: @"alias \"%@\" [%@]\n",
[identifier action]]; alias.name, alias.action];
}]; }];
[stream close]; [stream close];
} }
COMMAND(writecfg, ARG_NONE, ^{ COMMAND(writecfg, ARG_NONE, ^ {
writecfg(); writecfg();
}) })
@ -384,14 +387,14 @@ COMMAND(writecfg, ARG_NONE, ^{
void void
intset(OFString *name, int v) 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) { COMMAND(if, ARG_3STR, ^ (OFString *cond, OFString *thenp, OFString *elsep) {
execute((![cond hasPrefix:@"0"] ? thenp : elsep), true); 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; int t = times.cube_intValue;
for (int i = 0; i < t; i++) { for (int i = 0; i < t; i++) {
@ -400,12 +403,12 @@ COMMAND(loop, ARG_2STR, ^(OFString *times, OFString *body) {
} }
}) })
COMMAND(while, ARG_2STR, ^(OFString *cond, OFString *body) { COMMAND(while, ARG_2STR, ^ (OFString *cond, OFString *body) {
while (execute(cond, true)) while (execute(cond, true))
execute(body, true); execute(body, true);
}) })
COMMAND(onrelease, ARG_DWN1, ^(bool on, OFString *body) { COMMAND(onrelease, ARG_DWN1, ^ (bool on, OFString *body) {
if (!on) if (!on)
execute(body, true); execute(body, true);
}) })
@ -416,15 +419,15 @@ concat(OFString *s)
alias(@"s", s); alias(@"s", s);
} }
COMMAND(concat, ARG_VARI, ^(OFString *s) { COMMAND(concat, ARG_VARI, ^ (OFString *s) {
concat(s); concat(s);
}) })
COMMAND(concatword, ARG_VARI, ^(OFString *s) { COMMAND(concatword, ARG_VARI, ^ (OFString *s) {
concat([s stringByReplacingOccurrencesOfString:@" " withString:@""]); concat([s stringByReplacingOccurrencesOfString: @" " withString: @""]);
}) })
COMMAND(listlen, ARG_1EST, ^(OFString *a_) { COMMAND(listlen, ARG_1EST, ^ (OFString *a_) {
const char *a = a_.UTF8String; const char *a = a_.UTF8String;
if (!*a) if (!*a)
@ -438,7 +441,7 @@ COMMAND(listlen, ARG_1EST, ^(OFString *a_) {
return n + 1; return n + 1;
}) })
COMMAND(at, ARG_2STR, ^(OFString *s_, OFString *pos) { COMMAND(at, ARG_2STR, ^ (OFString *s_, OFString *pos) {
int n = pos.cube_intValue; int n = pos.cube_intValue;
char *copy __attribute__((__cleanup__(cleanup))) = char *copy __attribute__((__cleanup__(cleanup))) =
strdup(s_.UTF8String); strdup(s_.UTF8String);
@ -451,46 +454,46 @@ COMMAND(at, ARG_2STR, ^(OFString *s_, OFString *pos) {
concat(@(s)); concat(@(s));
}) })
COMMAND(+, ARG_2EXP, ^(int a, int b) { COMMAND(+, ARG_2EXP, ^ (int a, int b) {
return a + b; return a + b;
}) })
COMMAND(*, ARG_2EXP, ^(int a, int b) { COMMAND(*, ARG_2EXP, ^ (int a, int b) {
return a * b; return a * b;
}) })
COMMAND(-, ARG_2EXP, ^(int a, int b) { COMMAND(-, ARG_2EXP, ^ (int a, int b) {
return a - 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; 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; return b ? a % b : 0;
}) })
COMMAND(=, ARG_2EXP, ^(int a, int b) { COMMAND(=, ARG_2EXP, ^ (int a, int b) {
return (int)(a == b); return (int)(a == b);
}) })
COMMAND(<, ARG_2EXP, ^(int a, int b) { COMMAND(<, ARG_2EXP, ^ (int a, int b) {
return (int)(a < b); return (int)(a < b);
}) })
COMMAND(>, ARG_2EXP, ^(int a, int b) { COMMAND(>, ARG_2EXP, ^ (int a, int b) {
return (int)(a > b); return (int)(a > b);
}) })
COMMAND(strcmp, ARG_2EST, ^(OFString *a, OFString *b) { COMMAND(strcmp, ARG_2EST, ^ (OFString *a, OFString *b) {
return [a isEqual:b]; return [a isEqual: b];
}) })
COMMAND(rnd, ARG_1EXP, ^(int a) { COMMAND(rnd, ARG_1EXP, ^ (int a) {
return (a > 0 ? rnd(a) : 0); return (a > 0 ? rnd(a) : 0);
}) })
COMMAND(millis, ARG_1EXP, ^(int unused) { COMMAND(millis, ARG_1EXP, ^ (int unused) {
return lastmillis; return lastmillis;
}) })

View file

@ -18,7 +18,7 @@ int conskip = 0;
bool saycommandon = false; bool saycommandon = false;
static OFMutableString *commandbuf; static OFMutableString *commandbuf;
COMMAND(conskip, ARG_1INT, ^(int n) { COMMAND(conskip, ARG_1INT, ^ (int n) {
conskip += n; conskip += n;
if (conskip < 0) if (conskip < 0)
conskip = 0; conskip = 0;
@ -38,16 +38,16 @@ conline(OFString *sf, bool highlight) // add a line to the console buffer
if (highlight) if (highlight)
// show line in a different colour, for chat etc. // show line in a different colour, for chat etc.
[text appendString:@"\f"]; [text appendString: @"\f"];
[text appendString:sf]; [text appendString: sf];
if (conlines == nil) if (conlines == nil)
conlines = [[OFMutableArray alloc] init]; conlines = [[OFMutableArray alloc] init];
[conlines insertObject:[ConsoleLine lineWithText:text [conlines insertObject: [ConsoleLine lineWithText: text
outtime:lastmillis] outtime: lastmillis]
atIndex:0]; atIndex: 0];
puts(text.UTF8String); puts(text.UTF8String);
#ifndef OF_WINDOWS #ifndef OF_WINDOWS
@ -61,15 +61,15 @@ conoutf(OFConstantString *format, ...)
va_list arguments; va_list arguments;
va_start(arguments, format); va_start(arguments, format);
OFString *string = [[OFString alloc] initWithFormat:format OFString *string = [[OFString alloc] initWithFormat: format
arguments:arguments]; arguments: arguments];
va_end(arguments); va_end(arguments);
int n = 0; int n = 0;
while (string.length > WORDWRAP) { while (string.length > WORDWRAP) {
conline([string substringToIndex:WORDWRAP], n++ != 0); conline([string substringToIndex: WORDWRAP], n++ != 0);
string = [string substringFromIndex:WORDWRAP]; string = [string substringFromIndex: WORDWRAP];
} }
conline(string, n != 0); conline(string, n != 0);
} }
@ -102,19 +102,19 @@ renderconsole()
static OFMutableArray<KeyMapping *> *keyMappings = nil; static OFMutableArray<KeyMapping *> *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) if (keyMappings == nil)
keyMappings = [[OFMutableArray alloc] init]; keyMappings = [[OFMutableArray alloc] init];
KeyMapping *mapping = [KeyMapping mappingWithCode:code.cube_intValue KeyMapping *mapping = [KeyMapping mappingWithCode: code.cube_intValue
name:key]; name: key];
mapping.action = action; 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) { for (KeyMapping *mapping in keyMappings) {
if ([mapping.name caseInsensitiveCompare:key] == if ([mapping.name caseInsensitiveCompare: key] ==
OFOrderedSame) { OFOrderedSame) {
mapping.action = action; mapping.action = action;
return; return;
@ -143,11 +143,11 @@ saycommand(OFString *init)
commandbuf = [init mutableCopy]; commandbuf = [init mutableCopy];
} }
COMMAND(saycommand, ARG_VARI, ^(OFString *init) { COMMAND(saycommand, ARG_VARI, ^ (OFString *init) {
saycommand(init); saycommand(init);
}) })
COMMAND(mapmsg, ARG_1STR, ^(OFString *s) { COMMAND(mapmsg, ARG_1STR, ^ (OFString *s) {
memset(hdr.maptitle, '\0', sizeof(hdr.maptitle)); memset(hdr.maptitle, '\0', sizeof(hdr.maptitle));
strncpy(hdr.maptitle, s.UTF8String, 127); strncpy(hdr.maptitle, s.UTF8String, 127);
}) })
@ -155,13 +155,13 @@ COMMAND(mapmsg, ARG_1STR, ^(OFString *s) {
void void
pasteconsole() pasteconsole()
{ {
[commandbuf appendString:@(SDL_GetClipboardText())]; [commandbuf appendString: @(SDL_GetClipboardText())];
} }
static OFMutableArray<OFString *> *vhistory; static OFMutableArray<OFString *> *vhistory;
static int histpos = 0; static int histpos = 0;
COMMAND(history, ARG_1INT, ^(int n) { COMMAND(history, ARG_1INT, ^ (int n) {
static bool rec = false; static bool rec = false;
if (!rec && n >= 0 && n < vhistory.count) { if (!rec && n >= 0 && n < vhistory.count) {
@ -226,14 +226,14 @@ keypress(int code, bool isDown)
init]; init];
if (vhistory.count == 0 || if (vhistory.count == 0 ||
![vhistory.lastObject ![vhistory.lastObject isEqual:
isEqual:commandbuf]) { commandbuf]) {
// cap this? // cap this?
[vhistory addObject:[commandbuf [vhistory addObject:
copy]]; [commandbuf copy]];
} }
histpos = vhistory.count; histpos = vhistory.count;
if ([commandbuf hasPrefix:@"/"]) if ([commandbuf hasPrefix: @"/"])
execute(commandbuf, true); execute(commandbuf, true);
else else
toserver(commandbuf); toserver(commandbuf);
@ -261,7 +261,7 @@ void
input(OFString *text) input(OFString *text)
{ {
if (saycommandon) if (saycommandon)
[commandbuf appendString:text]; [commandbuf appendString: text];
} }
OFString * OFString *
@ -275,6 +275,6 @@ writebinds(OFStream *stream)
{ {
for (KeyMapping *mapping in keyMappings) for (KeyMapping *mapping in keyMappings)
if (mapping.action.length > 0) if (mapping.action.length > 0)
[stream writeFormat:@"bind \"%@\" [%@]\n", mapping.name, [stream writeFormat: @"bind \"%@\" [%@]\n",
mapping.action]; mapping.name, mapping.action];
} }

View file

@ -310,7 +310,7 @@ extern bool demoplayback;
#define m_sp (gamemode < 0) #define m_sp (gamemode < 0)
#define m_dmsp (gamemode == -1) #define m_dmsp (gamemode == -1)
#define m_classicsp (gamemode == -2) #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 // function signatures for script functions, see command.mm
enum { enum {

View file

@ -20,7 +20,7 @@ struct block sel = { 0, 0, 0, 0 };
OF_CONSTRUCTOR() OF_CONSTRUCTOR()
{ {
enqueueInit(^{ enqueueInit(^ {
static const struct { static const struct {
OFString *name; OFString *name;
int *storage; int *storage;
@ -28,13 +28,13 @@ OF_CONSTRUCTOR()
{ @"selxs", &sel.xs }, { @"selys", &sel.ys } }; { @"selxs", &sel.xs }, { @"selys", &sel.ys } };
for (size_t i = 0; i < 4; i++) { for (size_t i = 0; i < 4; i++) {
Variable *variable = Variable *variable = [Variable
[Variable variableWithName:vars[i].name variableWithName: vars[i].name
min:0 min: 0
max:4096 max: 4096
storage:vars[i].storage storage: vars[i].storage
function:NULL function: NULL
persisted:false]; persisted: false];
Identifier.identifiers[vars[i].name] = variable; Identifier.identifiers[vars[i].name] = variable;
} }
}); });
@ -93,7 +93,7 @@ toggleedit()
editing = editmode; editing = editmode;
} }
COMMAND(edittoggle, ARG_NONE, ^{ COMMAND(edittoggle, ARG_NONE, ^ {
toggleedit(); toggleedit();
}) })
@ -137,7 +137,7 @@ noselection()
if (noteditmode() || multiplayer()) \ if (noteditmode() || multiplayer()) \
return; 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 }; struct block s = { x, y, xs, ys };
sel = s; sel = s;
selh = 0; selh = 0;
@ -221,23 +221,23 @@ cursorupdate() // called every frame from hud
float h3 = sheight(s, SWS(s, 1, 1, ssize), z); float h3 = sheight(s, SWS(s, 1, 1, ssize), z);
float h4 = sheight(s, SWS(s, 0, 1, ssize), z); float h4 = sheight(s, SWS(s, 0, 1, ssize), z);
if (s->tag) if (s->tag)
linestyle(GRIDW, [OFColor colorWithRed:1.0f linestyle(GRIDW, [OFColor colorWithRed: 1.0f
green:0.25f green: 0.25f
blue:0.25f blue: 0.25f
alpha:1.0f]); alpha: 1.0f]);
else if (s->type == FHF || s->type == CHF) else if (s->type == FHF || s->type == CHF)
linestyle(GRIDW, [OFColor colorWithRed:0.5f linestyle(GRIDW, [OFColor colorWithRed: 0.5f
green:1.0f green: 1.0f
blue:0.5f blue: 0.5f
alpha:1.0f]); alpha: 1.0f]);
else else
linestyle(GRIDW, OFColor.gray); linestyle(GRIDW, OFColor.gray);
struct block b = { ix, iy, 1, 1 }; struct block b = { ix, iy, 1, 1 };
box(&b, h1, h2, h3, h4); box(&b, h1, h2, h3, h4);
linestyle(GRID8, [OFColor colorWithRed:0.25f linestyle(GRID8, [OFColor colorWithRed: 0.25f
green:0.25f green: 0.25f
blue:1.0f blue: 1.0f
alpha:1.0f]); alpha: 1.0f]);
if (!(ix & GRIDM)) if (!(ix & GRIDM))
line(ix, iy, h1, ix, iy + 1, h4); line(ix, iy, h1, ix, iy + 1, h4);
if (!(ix + 1 & GRIDM)) if (!(ix + 1 & GRIDM))
@ -262,10 +262,10 @@ cursorupdate() // called every frame from hud
} }
if (selset) { if (selset) {
linestyle(GRIDS, [OFColor colorWithRed:1.0f linestyle(GRIDS, [OFColor colorWithRed: 1.0f
green:0.25f green: 0.25f
blue:0.25f blue: 0.25f
alpha:1.0f]); alpha: 1.0f]);
box(&sel, (float)selh, (float)selh, (float)selh, (float)selh); box(&sel, (float)selh, (float)selh, (float)selh, (float)selh);
} }
} }
@ -278,12 +278,12 @@ pruneundos(int maxremain) // bound memory
{ {
int t = 0; int t = 0;
for (ssize_t i = (ssize_t)undos.count - 1; i >= 0; i--) { 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); t += undo->xs * undo->ys * sizeof(struct sqr);
if (t > maxremain) { if (t > maxremain) {
OFFreeMemory(undo); OFFreeMemory(undo);
[undos removeItemAtIndex:i]; [undos removeItemAtIndex: i];
} }
} }
} }
@ -293,14 +293,14 @@ makeundo()
{ {
if (undos == nil) if (undos == nil)
undos = [[OFMutableData alloc] undos = [[OFMutableData alloc]
initWithItemSize:sizeof(struct block *)]; initWithItemSize: sizeof(struct block *)];
struct block *copy = blockcopy(&sel); struct block *copy = blockcopy(&sel);
[undos addItem:&copy]; [undos addItem: &copy];
pruneundos(undomegs << 20); pruneundos(undomegs << 20);
} }
COMMAND(undo, ARG_NONE, ^{ COMMAND(undo, ARG_NONE, ^ {
EDITMP; EDITMP;
if (undos.count == 0) { if (undos.count == 0) {
conoutf(@"nothing more to undo"); conoutf(@"nothing more to undo");
@ -314,7 +314,7 @@ COMMAND(undo, ARG_NONE, ^{
static struct block *copybuf = NULL; static struct block *copybuf = NULL;
COMMAND(copy, ARG_NONE, ^{ COMMAND(copy, ARG_NONE, ^ {
EDITSELMP; EDITSELMP;
if (copybuf) if (copybuf)
@ -323,7 +323,7 @@ COMMAND(copy, ARG_NONE, ^{
copybuf = blockcopy(&sel); copybuf = blockcopy(&sel);
}) })
COMMAND(paste, ARG_NONE, ^{ COMMAND(paste, ARG_NONE, ^ {
EDITMP; EDITMP;
if (!copybuf) { if (!copybuf) {
conoutf(@"nothing to paste"); conoutf(@"nothing to paste");
@ -401,7 +401,7 @@ editheight(int flr, int amount)
addmsg(1, 7, SV_EDITH, sel.x, sel.y, sel.xs, sel.ys, isfloor, amount); 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); editheight(flr, amount);
}) })
@ -424,7 +424,7 @@ edittexxy(int type, int t, const struct block *sel)
}); });
} }
COMMAND(edittex, ARG_2INT, ^(int type, int dir) { COMMAND(edittex, ARG_2INT, ^ (int type, int dir) {
EDITSEL; EDITSEL;
if (type < 0 || type > 3) if (type < 0 || type > 3)
@ -444,7 +444,7 @@ COMMAND(edittex, ARG_2INT, ^(int type, int dir) {
addmsg(1, 7, SV_EDITT, sel.x, sel.y, sel.xs, sel.ys, type, t); addmsg(1, 7, SV_EDITT, sel.x, sel.y, sel.xs, sel.ys, type, t);
}) })
COMMAND(replace, ARG_NONE, (^{ COMMAND(replace, ARG_NONE, (^ {
EDITSELMP; EDITSELMP;
for (int x = 0; x < ssize; x++) { for (int x = 0; x < ssize; x++) {
@ -497,15 +497,15 @@ edittype(int type)
addmsg(1, 6, SV_EDITS, sel.x, sel.y, sel.xs, sel.ys, type); 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); edittype(t == 0 ? FHF : CHF);
}) })
COMMAND(solid, ARG_1INT, ^(int t) { COMMAND(solid, ARG_1INT, ^ (int t) {
edittype(t == 0 ? SPACE : SOLID); edittype(t == 0 ? SPACE : SOLID);
}) })
COMMAND(corner, ARG_NONE, ^{ COMMAND(corner, ARG_NONE, ^ {
edittype(CORNER); edittype(CORNER);
}) })
@ -529,7 +529,7 @@ editequalisexy(bool isfloor, const struct block *sel)
}); });
} }
COMMAND(equalize, ARG_1INT, ^(int flr) { COMMAND(equalize, ARG_1INT, ^ (int flr) {
bool isfloor = (flr == 0); bool isfloor = (flr == 0);
EDITSEL; EDITSEL;
@ -545,7 +545,7 @@ setvdeltaxy(int delta, const struct block *sel)
remipmore(sel, 0); remipmore(sel, 0);
} }
COMMAND(vdelta, ARG_1INT, ^(int delta) { COMMAND(vdelta, ARG_1INT, ^ (int delta) {
EDITSEL; EDITSEL;
setvdeltaxy(delta, &sel); setvdeltaxy(delta, &sel);
@ -556,7 +556,7 @@ COMMAND(vdelta, ARG_1INT, ^(int delta) {
int archverts[MAXARCHVERT][MAXARCHVERT]; int archverts[MAXARCHVERT][MAXARCHVERT];
bool archvinit = false; 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) { if (!archvinit) {
archvinit = true; archvinit = true;
for (int s = 0; s < MAXARCHVERT; s++) for (int s = 0; s < MAXARCHVERT; s++)
@ -568,7 +568,7 @@ COMMAND(archvertex, ARG_3INT, ^(int span, int vert, int delta) {
archverts[span][vert] = delta; archverts[span][vert] = delta;
}) })
COMMAND(arch, ARG_2INT, ^(int sidedelta, int _a) { COMMAND(arch, ARG_2INT, ^ (int sidedelta, int _a) {
EDITSELMP; EDITSELMP;
sel.xs++; sel.xs++;
@ -590,7 +590,7 @@ COMMAND(arch, ARG_2INT, ^(int sidedelta, int _a) {
remipmore(sel, 0); remipmore(sel, 0);
}) })
COMMAND(slope, ARG_2INT, ^(int xd, int yd) { COMMAND(slope, ARG_2INT, ^ (int xd, int yd) {
EDITSELMP; EDITSELMP;
int off = 0; int off = 0;
@ -609,7 +609,7 @@ COMMAND(slope, ARG_2INT, ^(int xd, int yd) {
remipmore(sel, 0); remipmore(sel, 0);
}) })
COMMAND(perlin, ARG_3INT, ^(int scale, int seed, int psize) { COMMAND(perlin, ARG_3INT, ^ (int scale, int seed, int psize) {
EDITSELMP; EDITSELMP;
sel.xs++; sel.xs++;
@ -639,7 +639,7 @@ VARF(
world[i].r = world[i].g = world[i].b = 176; world[i].r = world[i].g = world[i].b = 176;
}); });
COMMAND(edittag, ARG_1INT, ^(int tag) { COMMAND(edittag, ARG_1INT, ^ (int tag) {
EDITSELMP; EDITSELMP;
struct block *sel_ = &sel; struct block *sel_ = &sel;
@ -649,10 +649,10 @@ COMMAND(edittag, ARG_1INT, ^(int tag) {
}) })
COMMAND(newent, ARG_5STR, COMMAND(newent, ARG_5STR,
^(OFString *what, OFString *a1, OFString *a2, OFString *a3, OFString *a4) { ^ (OFString *what, OFString *a1, OFString *a2, OFString *a3, OFString *a4) {
EDITSEL; EDITSEL;
newentity(sel.x, sel.y, (int)Player.player1.origin.z, what, newentity(sel.x, sel.y, (int)Player.player1.origin.z, what,
[a1 cube_intValueWithBase:0], [a2 cube_intValueWithBase:0], [a1 cube_intValueWithBase: 0], [a2 cube_intValueWithBase: 0],
[a3 cube_intValueWithBase:0], [a4 cube_intValueWithBase:0]); [a3 cube_intValueWithBase: 0], [a4 cube_intValueWithBase: 0]);
}) })

View file

@ -313,7 +313,7 @@ checkitems()
if (editmode) if (editmode)
return; return;
[ents enumerateObjectsUsingBlock:^(Entity *e, size_t i, bool *stop) { [ents enumerateObjectsUsingBlock: ^ (Entity *e, size_t i, bool *stop) {
if (e.type == NOTUSED) if (e.type == NOTUSED)
return; return;
@ -348,7 +348,7 @@ checkquad(int time)
void void
putitems(unsigned char **p) 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) || if ((e.type >= I_SHELLS && e.type <= I_QUAD) ||
e.type == CARROT) { e.type == CARROT) {
putint(p, i); putint(p, i);

View file

@ -21,10 +21,10 @@ menuset(int menu)
menus[1].menusel = 0; menus[1].menusel = 0;
} }
COMMAND(showmenu, ARG_1STR, ^(OFString *name) { COMMAND(showmenu, ARG_1STR, ^ (OFString *name) {
int i = 0; int i = 0;
for (Menu *menu in menus) { for (Menu *menu in menus) {
if (i > 1 && [menu.name isEqual:name]) { if (i > 1 && [menu.name isEqual: name]) {
menuset(i); menuset(i);
return; return;
} }
@ -54,7 +54,7 @@ rendermenu()
Menu *m = menus[vmenu]; Menu *m = menus[vmenu];
OFString *title; OFString *title;
if (vmenu > 1) if (vmenu > 1)
title = [OFString stringWithFormat:@"[ %@ menu ]", m.name]; title = [OFString stringWithFormat: @"[ %@ menu ]", m.name];
else else
title = m.name; title = m.name;
int mdisp = m.items.count; int mdisp = m.items.count;
@ -93,10 +93,10 @@ newmenu(OFString *name)
if (menus == nil) if (menus == nil)
menus = [[OFMutableArray alloc] init]; 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); newmenu(name);
}) })
@ -106,17 +106,17 @@ menumanual(int m, int n, OFString *text)
if (n == 0) if (n == 0)
[menus[m].items removeAllObjects]; [menus[m].items removeAllObjects];
MenuItem *item = [MenuItem itemWithText:text action:@""]; MenuItem *item = [MenuItem itemWithText: text action: @""];
[menus[m].items addObject:item]; [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; Menu *menu = menus.lastObject;
MenuItem *item = MenuItem *item = [MenuItem
[MenuItem itemWithText:text itemWithText: text
action:(action.length > 0 ? action : text)]; action: (action.length > 0 ? action : text)];
[menu.items addObject:item]; [menu.items addObject: item];
}) })
bool bool
@ -155,7 +155,7 @@ menukey(int code, bool isdown)
if (menuStack == nil) if (menuStack == nil)
menuStack = [[OFMutableArray alloc] init]; menuStack = [[OFMutableArray alloc] init];
[menuStack addObject:@(vmenu)]; [menuStack addObject: @(vmenu)];
menuset(-1); menuset(-1);
execute(action, true); execute(action, true);

View file

@ -32,7 +32,7 @@ plcollide(
if (fabs(o.origin.z - d.origin.z) < o.aboveEye + d.eyeHeight) if (fabs(o.origin.z - d.origin.z) < o.aboveEye + d.eyeHeight)
return false; return false;
if ([d isKindOfClass:Monster.class]) if ([d isKindOfClass: Monster.class])
return false; // hack return false; // hack
*headspace = d.origin.z - o.origin.z - o.aboveEye - d.eyeHeight; *headspace = d.origin.z - o.origin.z - o.aboveEye - d.eyeHeight;
@ -108,10 +108,8 @@ collide(DynamicEntity *d, bool spawn, float drop, float rise)
const int y2 = fy2; const int y2 = fy2;
float hi = 127, lo = -128; float hi = 127, lo = -128;
// big monsters are afraid of heights, unless angry :) // big monsters are afraid of heights, unless angry :)
float minfloor = float minfloor = ([d isKindOfClass: Monster.class] && !spawn &&
([d isKindOfClass:Monster.class] && !spawn && d.health > 100 d.health > 100 ? d.origin.z - d.eyeHeight - 4.5f : -1000.0f);
? d.origin.z - d.eyeHeight - 4.5f
: -1000.0f);
for (int x = x1; x <= x2; x++) { for (int x = x1; x <= x2; x++) {
for (int y = y1; y <= y2; y++) { for (int y = y1; y <= y2; y++) {
@ -328,7 +326,7 @@ moveplayer4(DynamicEntity *pl, int moveres, bool local, int curtime)
pl.velocity.y / 8, pl.velocity.z); pl.velocity.y / 8, pl.velocity.z);
if (local) if (local)
playsoundc(S_JUMP); playsoundc(S_JUMP);
else if ([pl isKindOfClass:Monster.class]) { else if ([pl isKindOfClass: Monster.class]) {
OFVector3D loc = pl.origin; OFVector3D loc = pl.origin;
playsound(S_JUMP, &loc); playsound(S_JUMP, &loc);
} }
@ -337,7 +335,7 @@ moveplayer4(DynamicEntity *pl, int moveres, bool local, int curtime)
// high jump, make thud sound // high jump, make thud sound
if (local) if (local)
playsoundc(S_LAND); playsoundc(S_LAND);
else if ([pl isKindOfClass:Monster.class]) { else if ([pl isKindOfClass: Monster.class]) {
OFVector3D loc = pl.origin; OFVector3D loc = pl.origin;
playsound(S_LAND, &loc); playsound(S_LAND, &loc);
} }

View file

@ -64,7 +64,7 @@ int ol3r, ol3g, ol3b, ol4r, ol4g, ol4b;
int firstindex; int firstindex;
bool showm = false; bool showm = false;
COMMAND(showmip, ARG_NONE, ^{ COMMAND(showmip, ARG_NONE, ^ {
showm = !showm; showm = !showm;
}) })

View file

@ -60,10 +60,10 @@ blendbox(int x1, int y1, int x2, int y2, bool border)
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
glBegin(GL_QUADS); glBegin(GL_QUADS);
if (border) if (border)
[[OFColor colorWithRed:0.5f [[OFColor colorWithRed: 0.5f
green:0.3f green: 0.3f
blue:0.4f blue: 0.4f
alpha:1.0f] cube_setAsGLColor]; alpha: 1.0f] cube_setAsGLColor];
else else
[OFColor.white cube_setAsGLColor]; [OFColor.white cube_setAsGLColor];
glVertex2i(x1, y1); glVertex2i(x1, y1);
@ -74,10 +74,10 @@ blendbox(int x1, int y1, int x2, int y2, bool border)
glDisable(GL_BLEND); glDisable(GL_BLEND);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_POLYGON); glBegin(GL_POLYGON);
[[OFColor colorWithRed:0.2f [[OFColor colorWithRed: 0.2f
green:0.7f green: 0.7f
blue:0.4f blue: 0.4f
alpha:1.0f] cube_setAsGLColor]; alpha: 1.0f] cube_setAsGLColor];
glVertex2i(x1, y1); glVertex2i(x1, y1);
glVertex2i(x2, y1); glVertex2i(x2, y1);
glVertex2i(x2, y2); glVertex2i(x2, y2);
@ -133,10 +133,10 @@ renderspheres(int time)
for (struct sphere *p, **pp = &slist; (p = *pp) != NULL;) { for (struct sphere *p, **pp = &slist; (p = *pp) != NULL;) {
glPushMatrix(); glPushMatrix();
float size = p->size / p->max; float size = p->size / p->max;
[[OFColor colorWithRed:1.0f [[OFColor colorWithRed: 1.0f
green:1.0f green: 1.0f
blue:1.0f blue: 1.0f
alpha:1.0f - size] cube_setAsGLColor]; alpha: 1.0f - size] cube_setAsGLColor];
glTranslatef(p->o.x, p->o.z, p->o.y); glTranslatef(p->o.x, p->o.z, p->o.y);
glRotatef(lastmillis / 5.0f, 1, 1, 1); glRotatef(lastmillis / 5.0f, 1, 1, 1);
glScalef(p->size, p->size, p->size); glScalef(p->size, p->size, p->size);
@ -207,34 +207,33 @@ renderents()
if (e >= 0) { if (e >= 0) {
Entity *c = ents[e]; Entity *c = ents[e];
closeent = closeent =
[OFString stringWithFormat:@"closest entity = %@ (%d, %d, " [OFString stringWithFormat:
@"%d, %d), selection = (%d, %d)", @"closest entity = %@ (%d, %d, %d, %d), "
@"selection = (%d, %d)",
entnames[c.type], c.attr1, c.attr2, c.attr3, c.attr4, entnames[c.type], c.attr1, c.attr2, c.attr3, c.attr4,
getvar(@"selxs"), getvar(@"selys")]; getvar(@"selxs"), getvar(@"selys")];
} }
} }
COMMAND(loadsky, ARG_1STR, (^(OFString *basename) { COMMAND(loadsky, ARG_1STR, (^ (OFString *basename) {
static OFString *lastsky = @""; static OFString *lastsky = @"";
basename = [basename stringByReplacingOccurrencesOfString:@"\\" basename = [basename stringByReplacingOccurrencesOfString: @"\\"
withString:@"/"]; withString: @"/"];
if ([lastsky isEqual:basename]) if ([lastsky isEqual: basename])
return; return;
static const OFString *side[] = { @"ft", @"bk", @"lf", @"rt", @"dn", static const OFString *side[] = { @"ft", @"bk", @"lf", @"rt", @"dn",
@"up" }; @"up" };
int texnum = 14; int texnum = 14;
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
OFString *path = [OFString OFString *path = [OFString stringWithFormat:
stringWithFormat:@"packages/%@_%@.jpg", basename, side[i]]; @"packages/%@_%@.jpg", basename, side[i]];
int xs, ys; int xs, ys;
if (!installtex(texnum + i, if (!installtex(texnum + i, [Cube.sharedInstance.gameDataIRI
[Cube.sharedInstance.gameDataIRI IRIByAppendingPathComponent: path], &xs, &ys, true))
IRIByAppendingPathComponent:path],
&xs, &ys, true))
conoutf(@"could not load sky textures"); conoutf(@"could not load sky textures");
} }
@ -361,15 +360,15 @@ gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwater)
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
glBegin(GL_QUADS); glBegin(GL_QUADS);
if (dblend) if (dblend)
[[OFColor colorWithRed:0.0f [[OFColor colorWithRed: 0.0f
green:0.9f green: 0.9f
blue:0.9f blue: 0.9f
alpha:1.0f] cube_setAsGLColor]; alpha: 1.0f] cube_setAsGLColor];
else else
[[OFColor colorWithRed:0.9f [[OFColor colorWithRed: 0.9f
green:0.5f green: 0.5f
blue:0.0f blue: 0.0f
alpha:1.0f] cube_setAsGLColor]; alpha: 1.0f] cube_setAsGLColor];
glVertex2i(0, 0); glVertex2i(0, 0);
glVertex2i(VIRTW, 0); glVertex2i(VIRTW, 0);
glVertex2i(VIRTW, VIRTH); glVertex2i(VIRTW, VIRTH);
@ -404,10 +403,11 @@ gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwater)
else if (player1.health <= 25) else if (player1.health <= 25)
[OFColor.red cube_setAsGLColor]; [OFColor.red cube_setAsGLColor];
else if (player1.health <= 50) else if (player1.health <= 50)
[[OFColor colorWithRed:1.0f [[OFColor colorWithRed: 1.0f
green:0.5f green: 0.5f
blue:0.0f blue: 0.0f
alpha:1.0f] cube_setAsGLColor]; alpha: 1.0f]
cube_setAsGLColor];
} }
float chsize = (float)crosshairsize; float chsize = (float)crosshairsize;
glTexCoord2d(0.0, 0.0); glTexCoord2d(0.0, 0.0);

View file

@ -190,19 +190,19 @@ purgetextures()
int curtexnum = 0; int curtexnum = 0;
COMMAND(texturereset, ARG_NONE, ^{ COMMAND(texturereset, ARG_NONE, ^ {
curtexnum = 0; 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; int num = curtexnum++, frame = aframe.cube_intValue;
if (num < 0 || num >= 256 || frame < 0 || frame >= MAXFRAMES) if (num < 0 || num >= 256 || frame < 0 || frame >= MAXFRAMES)
return; return;
mapping[num][frame] = 1; mapping[num][frame] = 1;
mapname[num][frame] = [name stringByReplacingOccurrencesOfString:@"\\" mapname[num][frame] = [name stringByReplacingOccurrencesOfString: @"\\"
withString:@"/"]; withString: @"/"];
})) }))
int int
@ -223,7 +223,7 @@ lookuptexture(int tex, int *xs, int *ys)
// lazily happens once per "texture" command, basically // lazily happens once per "texture" command, basically
for (int i = 0; i < curtex; i++) { 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; mapping[tex][frame] = tid = i + FIRSTTEX;
*xs = texx[i]; *xs = texx[i];
*ys = texy[i]; *ys = texy[i];
@ -237,13 +237,11 @@ lookuptexture(int tex, int *xs, int *ys)
int tnum = curtex + FIRSTTEX; int tnum = curtex + FIRSTTEX;
texname[curtex] = mapname[tex][frame]; texname[curtex] = mapname[tex][frame];
OFString *path = OFString *path = [OFString stringWithFormat: @"packages/%@",
[OFString stringWithFormat:@"packages/%@", texname[curtex]]; texname[curtex]];
if (installtex(tnum, if (installtex(tnum, [Cube.sharedInstance.gameDataIRI
[Cube.sharedInstance.gameDataIRI IRIByAppendingPathComponent: path], xs, ys, false)) {
IRIByAppendingPathComponent:path],
xs, ys, false)) {
mapping[tex][frame] = tnum; mapping[tex][frame] = tnum;
texx[curtex] = *xs; texx[curtex] = *xs;
texy[curtex] = *ys; texy[curtex] = *ys;
@ -322,10 +320,10 @@ addstrip(int tex, int start, int n)
{ {
if (strips == nil) if (strips == nil)
strips = [[OFMutableData alloc] strips = [[OFMutableData alloc]
initWithItemSize:sizeof(struct strip)]; initWithItemSize: sizeof(struct strip)];
struct strip s = { .tex = tex, .start = start, .num = n }; struct strip s = { .tex = tex, .start = start, .num = n };
[strips addItem:&s]; [strips addItem: &s];
} }
#undef gamma #undef gamma

View file

@ -17,16 +17,18 @@ void
delayedload(MD2 *m) delayedload(MD2 *m)
{ {
if (!m.loaded) { if (!m.loaded) {
OFString *path = [OFString OFString *path = [OFString stringWithFormat:
stringWithFormat:@"packages/models/%@", m.loadname]; @"packages/models/%@", m.loadname];
OFIRI *baseIRI = [Cube.sharedInstance.gameDataIRI OFIRI *baseIRI = [Cube.sharedInstance.gameDataIRI
IRIByAppendingPathComponent:path]; IRIByAppendingPathComponent: path];
OFIRI *IRI1 = [baseIRI IRIByAppendingPathComponent:@"tris.md2"]; OFIRI *IRI1 = [baseIRI
if (![m loadWithIRI:IRI1]) IRIByAppendingPathComponent: @"tris.md2"];
if (![m loadWithIRI: IRI1])
fatal(@"loadmodel: %@", IRI1.string); fatal(@"loadmodel: %@", IRI1.string);
OFIRI *IRI2 = [baseIRI IRIByAppendingPathComponent:@"skin.jpg"]; OFIRI *IRI2 = [baseIRI
IRIByAppendingPathComponent: @"skin.jpg"];
int xs, ys; int xs, ys;
installtex(FIRSTMDL + m.mdlnum, IRI2, &xs, &ys, false); installtex(FIRSTMDL + m.mdlnum, IRI2, &xs, &ys, false);
m.loaded = true; m.loaded = true;
@ -44,7 +46,7 @@ loadmodel(OFString *name)
m = [MD2 md2]; m = [MD2 md2];
m.mdlnum = modelnum++; 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; m.loadname = name;
if (mdllookup == nil) if (mdllookup == nil)
@ -55,25 +57,23 @@ loadmodel(OFString *name)
return m; return m;
} }
COMMAND(mapmodel, ARG_5STR, COMMAND(mapmodel, ARG_5STR, ^ (OFString *rad, OFString *h, OFString *zoff,
^(OFString *rad, OFString *h, OFString *zoff, OFString *snap, OFString *snap, OFString *name) {
OFString *name) { MD2 *m = loadmodel([name stringByReplacingOccurrencesOfString: @"\\"
MD2 *m = withString: @"/"]);
loadmodel([name stringByReplacingOccurrencesOfString:@"\\" m.mmi = [MapModelInfo infoWithRad: rad.cube_intValue
withString:@"/"]); h: h.cube_intValue
m.mmi = [MapModelInfo infoWithRad:rad.cube_intValue zoff: zoff.cube_intValue
h:h.cube_intValue snap: snap.cube_intValue
zoff:zoff.cube_intValue name: m.loadname];
snap:snap.cube_intValue
name:m.loadname];
if (mapmodels == nil) if (mapmodels == nil)
mapmodels = [[OFMutableArray alloc] init]; mapmodels = [[OFMutableArray alloc] init];
[mapmodels addObject:m]; [mapmodels addObject: m];
}) })
COMMAND(mapmodelreset, ARG_NONE, ^{ COMMAND(mapmodelreset, ARG_NONE, ^ {
[mapmodels removeAllObjects]; [mapmodels removeAllObjects];
}) })
@ -102,35 +102,35 @@ rendermodel(OFString *mdl, int frame, int range, int tex, float rad,
int ix = (int)position.x; int ix = (int)position.x;
int iy = (int)position.z; int iy = (int)position.z;
OFColor *light = [OFColor colorWithRed:1 green:1 blue:1 alpha:1]; OFColor *light = OFColor.white;
if (!OUTBORD(ix, iy)) { if (!OUTBORD(ix, iy)) {
struct sqr *s = S(ix, iy); struct sqr *s = S(ix, iy);
float ll = 256.0f; // 0.96f; float ll = 256.0f; // 0.96f;
float of = 0.0f; // 0.1f; float of = 0.0f; // 0.1f;
light = [OFColor colorWithRed:s->r / ll + of light = [OFColor colorWithRed: s->r / ll + of
green:s->g / ll + of green: s->g / ll + of
blue:s->b / ll + of blue: s->b / ll + of
alpha:1]; alpha: 1];
} }
if (teammate) { if (teammate) {
float red, green, blue; float red, green, blue;
[light getRed:&red green:&green blue:&blue alpha:NULL]; [light getRed: &red green: &green blue: &blue alpha: NULL];
light = [OFColor colorWithRed:red * 0.6f light = [OFColor colorWithRed: red * 0.6f
green:green * 0.7f green: green * 0.7f
blue:blue * 1.2f blue: blue * 1.2f
alpha:1]; alpha: 1];
} }
[m renderWithLight:light [m renderWithLight: light
frame:frame frame: frame
range:range range: range
position:position position: position
yaw:yaw yaw: yaw
pitch:pitch pitch: pitch
scale:scale scale: scale
speed:speed speed: speed
snap:snap snap: snap
basetime:basetime]; basetime: basetime];
} }

View file

@ -139,8 +139,8 @@ draw_textf(OFConstantString *format, int left, int top, int gl_num, ...)
{ {
va_list arguments; va_list arguments;
va_start(arguments, gl_num); va_start(arguments, gl_num);
OFString *str = [[OFString alloc] initWithFormat:format OFString *str = [[OFString alloc] initWithFormat: format
arguments:arguments]; arguments: arguments];
va_end(arguments); va_end(arguments);
draw_text(str, left, top, gl_num); draw_text(str, left, top, gl_num);
} }
@ -170,10 +170,10 @@ draw_text(OFString *string, int left, int top, int gl_num)
} }
if (c == '\f') { if (c == '\f') {
[[OFColor colorWithRed:0.25f [[OFColor colorWithRed: 0.25f
green:1.0f green: 1.0f
blue:0.5f blue: 0.5f
alpha:1.0f] cube_setAsGLColor]; alpha: 1.0f] cube_setAsGLColor];
continue; continue;
} }

View file

@ -97,8 +97,7 @@ savestate(OFIRI *IRI)
{ {
stop(); stop();
f = gzopen([IRI.fileSystemRepresentation f = gzopen([IRI.fileSystemRepresentation
cStringWithEncoding:OFLocale.encoding], cStringWithEncoding: OFLocale.encoding], "wb9");
"wb9");
if (!f) { if (!f) {
conoutf(@"could not write %@", IRI.string); conoutf(@"could not write %@", IRI.string);
return; return;
@ -131,15 +130,16 @@ savestate(OFIRI *IRI)
} }
} }
COMMAND(savegame, ARG_1STR, (^(OFString *name) { COMMAND(savegame, ARG_1STR, (^ (OFString *name) {
if (!m_classicsp) { if (!m_classicsp) {
conoutf(@"can only save classic sp games"); conoutf(@"can only save classic sp games");
return; return;
} }
OFString *path = [OFString stringWithFormat:@"savegames/%@.csgz", name]; OFString *path = [OFString stringWithFormat:
OFIRI *IRI = @"savegames/%@.csgz", name];
[Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; OFIRI *IRI = [Cube.sharedInstance.userDataIRI
IRIByAppendingPathComponent: path];
savestate(IRI); savestate(IRI);
stop(); stop();
conoutf(@"wrote %@", IRI.string); conoutf(@"wrote %@", IRI.string);
@ -152,8 +152,7 @@ loadstate(OFIRI *IRI)
if (multiplayer()) if (multiplayer())
return; return;
f = gzopen([IRI.fileSystemRepresentation f = gzopen([IRI.fileSystemRepresentation
cStringWithEncoding:OFLocale.encoding], cStringWithEncoding: OFLocale.encoding], "rb9");
"rb9");
if (!f) { if (!f) {
conoutf(@"could not open %@", IRI.string); conoutf(@"could not open %@", IRI.string);
return; return;
@ -183,10 +182,11 @@ out:
stop(); stop();
} }
COMMAND(loadgame, ARG_1STR, (^(OFString *name) { COMMAND(loadgame, ARG_1STR, (^ (OFString *name) {
OFString *path = [OFString stringWithFormat:@"savegames/%@.csgz", name]; OFString *path = [OFString stringWithFormat:
OFIRI *IRI = @"savegames/%@.csgz", name];
[Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; OFIRI *IRI = [Cube.sharedInstance.userDataIRI
IRIByAppendingPathComponent: path];
loadstate(IRI); loadstate(IRI);
})) }))
@ -217,10 +217,10 @@ loadgamerest()
restoreserverstate(ents); restoreserverstate(ents);
OFMutableData *data = OFMutableData *data =
[OFMutableData dataWithCapacity:DynamicEntity.serializedSize]; [OFMutableData dataWithCapacity: DynamicEntity.serializedSize];
[data increaseCountBy:DynamicEntity.serializedSize]; [data increaseCountBy: DynamicEntity.serializedSize];
gzread(f, data.mutableItems, data.count); gzread(f, data.mutableItems, data.count);
[Player.player1 setFromSerializedData:data]; [Player.player1 setFromSerializedData: data];
Player.player1.lastAction = lastmillis; Player.player1.lastAction = lastmillis;
int nmonsters = gzgeti(); int nmonsters = gzgeti();
@ -230,7 +230,7 @@ loadgamerest()
for (Monster *monster in monsters) { for (Monster *monster in monsters) {
gzread(f, data.mutableItems, data.count); gzread(f, data.mutableItems, data.count);
[monster setFromSerializedData:data]; [monster setFromSerializedData: data];
// lazy, could save id of enemy instead // lazy, could save id of enemy instead
monster.enemy = Player.player1; monster.enemy = Player.player1;
// also lazy, but no real noticable effect on game // also lazy, but no real noticable effect on game
@ -246,7 +246,7 @@ loadgamerest()
Player *d = getclient(i); Player *d = getclient(i);
assert(d); assert(d);
gzread(f, data.mutableItems, data.count); gzread(f, data.mutableItems, data.count);
[d setFromSerializedData:data]; [d setFromSerializedData: data];
} }
} }
@ -264,7 +264,7 @@ int playbacktime = 0;
int ddamage, bdamage; int ddamage, bdamage;
OFVector3D dorig; OFVector3D dorig;
COMMAND(record, ARG_1STR, (^(OFString *name) { COMMAND(record, ARG_1STR, (^ (OFString *name) {
if (m_sp) { if (m_sp) {
conoutf(@"cannot record singleplayer games"); conoutf(@"cannot record singleplayer games");
return; return;
@ -274,9 +274,9 @@ COMMAND(record, ARG_1STR, (^(OFString *name) {
if (cn < 0) if (cn < 0)
return; return;
OFString *path = [OFString stringWithFormat:@"demos/%@.cdgz", name]; OFString *path = [OFString stringWithFormat: @"demos/%@.cdgz", name];
OFIRI *IRI = OFIRI *IRI = [Cube.sharedInstance.userDataIRI
[Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; IRIByAppendingPathComponent: path];
savestate(IRI); savestate(IRI);
gzputi(cn); gzputi(cn);
conoutf(@"started recording demo to %@", IRI.string); conoutf(@"started recording demo to %@", IRI.string);
@ -333,10 +333,10 @@ incomingdemodata(unsigned char *buf, int len, bool extras)
} }
} }
COMMAND(demo, ARG_1STR, (^(OFString *name) { COMMAND(demo, ARG_1STR, (^ (OFString *name) {
OFString *path = [OFString stringWithFormat:@"demos/%@.cdgz", name]; OFString *path = [OFString stringWithFormat: @"demos/%@.cdgz", name];
OFIRI *IRI = OFIRI *IRI = [Cube.sharedInstance.userDataIRI
[Cube.sharedInstance.userDataIRI IRIByAppendingPathComponent:path]; IRIByAppendingPathComponent: path];
loadstate(IRI); loadstate(IRI);
demoloading = true; demoloading = true;
})) }))
@ -462,10 +462,10 @@ demoplaybackstep()
if (playerhistory == nil) if (playerhistory == nil)
playerhistory = [[OFMutableArray alloc] init]; playerhistory = [[OFMutableArray alloc] init];
[playerhistory addObject:d]; [playerhistory addObject: d];
if (playerhistory.count > 20) if (playerhistory.count > 20)
[playerhistory removeObjectAtIndex:0]; [playerhistory removeObjectAtIndex: 0];
} }
readdemotime(); readdemotime();
@ -542,7 +542,7 @@ demoplaybackstep()
// if(player1->state!=CS_DEAD) showscores(false); // if(player1->state!=CS_DEAD) showscores(false);
} }
COMMAND(stop, ARG_NONE, ^{ COMMAND(stop, ARG_NONE, ^ {
if (demoplayback) if (demoplayback)
stopreset(); stopreset();
else else

View file

@ -24,8 +24,8 @@ int mode = 0;
void void
restoreserverstate(OFArray<Entity *> *ents) restoreserverstate(OFArray<Entity *> *ents)
{ {
[sents enumerateObjectsUsingBlock:^( [sents enumerateObjectsUsingBlock:
ServerEntity *e, size_t i, bool *stop) { ^ (ServerEntity *e, size_t i, bool *stop) {
e.spawned = ents[i].spawned; e.spawned = ents[i].spawned;
e.spawnsecs = 0; e.spawnsecs = 0;
}]; }];
@ -101,8 +101,8 @@ sendservmsg(OFString *msg)
void void
disconnect_client(int n, OFString *reason) disconnect_client(int n, OFString *reason)
{ {
[OFStdOut writeFormat:@"disconnecting client (%@) [%@]\n", [OFStdOut writeFormat: @"disconnecting client (%@) [%@]\n",
clients[n].hostname, reason]; clients[n].hostname, reason];
enet_peer_disconnect(clients[n].peer); enet_peer_disconnect(clients[n].peer);
clients[n].type = ST_EMPTY; clients[n].type = ST_EMPTY;
send2(true, -1, SV_CDIS, n); send2(true, -1, SV_CDIS, n);
@ -146,7 +146,7 @@ vote(OFString *map, int reqmode, int sender)
for (Client *client in clients) { for (Client *client in clients) {
if (client.type != ST_EMPTY) { if (client.type != ST_EMPTY) {
if (client.mapvote.length > 0) { if (client.mapvote.length > 0) {
if ([client.mapvote isEqual:map] && if ([client.mapvote isEqual: map] &&
client.modevote == reqmode) client.modevote == reqmode)
yes++; yes++;
else else
@ -159,8 +159,8 @@ vote(OFString *map, int reqmode, int sender)
if (yes == 1 && no == 0) if (yes == 1 && no == 0)
return true; // single player return true; // single player
OFString *msg = [OFString OFString *msg = [OFString stringWithFormat:
stringWithFormat:@"%@ suggests %@ on map %@ (set map to vote)", @"%@ suggests %@ on map %@ (set map to vote)",
clients[sender].name, modestr(reqmode), map]; clients[sender].name, modestr(reqmode), map];
sendservmsg(msg); sendservmsg(msg);
@ -227,8 +227,8 @@ process(ENetPacket *packet, int sender) // sender may be -1
while ((n = getint(&p)) != -1) while ((n = getint(&p)) != -1)
if (notgotitems) { if (notgotitems) {
while (sents.count <= n) while (sents.count <= n)
[sents addObject:[ServerEntity [sents addObject:
entity]]; [ServerEntity entity]];
sents[n].spawned = true; sents[n].spawned = true;
} }
notgotitems = false; notgotitems = false;
@ -314,8 +314,8 @@ send_welcome(int n)
sendstring(smapname, &p); sendstring(smapname, &p);
putint(&p, mode); putint(&p, mode);
putint(&p, SV_ITEMLIST); putint(&p, SV_ITEMLIST);
[sents enumerateObjectsUsingBlock:^( [sents enumerateObjectsUsingBlock:
ServerEntity *e, size_t i, bool *stop) { ^ (ServerEntity *e, size_t i, bool *stop) {
if (e.spawned) if (e.spawned)
putint(&p, i); putint(&p, i);
}]; }];
@ -356,7 +356,7 @@ addclient()
if (clients == nil) if (clients == nil)
clients = [[OFMutableArray alloc] init]; clients = [[OFMutableArray alloc] init];
[clients addObject:client]; [clients addObject: client];
return client; return client;
} }
@ -405,8 +405,8 @@ serverslice(int seconds,
// sp, or dedicated server loop // sp, or dedicated server loop
{ {
// spawn entities when timer reached // spawn entities when timer reached
[sents enumerateObjectsUsingBlock:^( [sents enumerateObjectsUsingBlock:
ServerEntity *e, size_t i, bool *stop) { ^ (ServerEntity *e, size_t i, bool *stop) {
if (e.spawnsecs && (e.spawnsecs -= seconds - lastsec) <= 0) { if (e.spawnsecs && (e.spawnsecs -= seconds - lastsec) <= 0) {
e.spawnsecs = 0; e.spawnsecs = 0;
e.spawned = true; e.spawned = true;
@ -421,8 +421,8 @@ serverslice(int seconds,
checkintermission(); checkintermission();
if (interm && seconds > interm) { if (interm && seconds > interm) {
interm = 0; interm = 0;
[clients enumerateObjectsUsingBlock:^( [clients enumerateObjectsUsingBlock:
Client *client, size_t i, bool *stop) { ^ (Client *client, size_t i, bool *stop) {
if (client.type != ST_EMPTY) { if (client.type != ST_EMPTY) {
// ask a client to trigger map reload // ask a client to trigger map reload
send2(true, i, SV_MAPRELOAD, 0); send2(true, i, SV_MAPRELOAD, 0);
@ -475,8 +475,8 @@ serverslice(int seconds,
&c.peer->address, hn, sizeof(hn)) == 0 &c.peer->address, hn, sizeof(hn)) == 0
? @(hn) ? @(hn)
: @"localhost"); : @"localhost");
[OFStdOut [OFStdOut writeFormat: @"client connected (%@)\n",
writeFormat:@"client connected (%@)\n", c.hostname]; c.hostname];
send_welcome(lastconnect = clients.count - 1); send_welcome(lastconnect = clients.count - 1);
break; break;
} }
@ -489,7 +489,8 @@ serverslice(int seconds,
case ENET_EVENT_TYPE_DISCONNECT: case ENET_EVENT_TYPE_DISCONNECT:
if ((intptr_t)event.peer->data < 0) if ((intptr_t)event.peer->data < 0)
break; break;
[OFStdOut writeFormat:@"disconnected client (%@)\n", [OFStdOut writeFormat:
@"disconnected client (%@)\n",
clients[(size_t)event.peer->data].hostname]; clients[(size_t)event.peer->data].hostname];
clients[(size_t)event.peer->data].type = ST_EMPTY; clients[(size_t)event.peer->data].type = ST_EMPTY;
send2(true, -1, SV_CDIS, (intptr_t)event.peer->data); send2(true, -1, SV_CDIS, (intptr_t)event.peer->data);

View file

@ -27,7 +27,7 @@ resolverinit(int threads, int limit)
while (threads > 0) { while (threads > 0) {
ResolverThread *rt = [ResolverThread thread]; ResolverThread *rt = [ResolverThread thread];
rt.name = @"resolverthread"; rt.name = @"resolverthread";
[resolverthreads addObject:rt]; [resolverthreads addObject: rt];
[rt start]; [rt start];
--threads; --threads;
} }
@ -48,7 +48,7 @@ resolverstop(size_t i, bool restart)
[rt start]; [rt start];
} else } else
[resolverthreads removeObjectAtIndex:i]; [resolverthreads removeObjectAtIndex: i];
} }
} }
@ -71,7 +71,7 @@ void
resolverquery(OFString *name) resolverquery(OFString *name)
{ {
@synchronized(ResolverThread.class) { @synchronized(ResolverThread.class) {
[resolverqueries addObject:name]; [resolverqueries addObject: name];
SDL_SemPost(resolversem); SDL_SemPost(resolversem);
} }
} }
@ -118,16 +118,16 @@ void
addserver(OFString *servername) addserver(OFString *servername)
{ {
for (ServerInfo *si in servers) for (ServerInfo *si in servers)
if ([si.name isEqual:servername]) if ([si.name isEqual: servername])
return; return;
if (servers == nil) if (servers == nil)
servers = [[OFMutableArray alloc] init]; 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); addserver(servername);
}) })
@ -163,7 +163,7 @@ checkresolver()
continue; continue;
for (ServerInfo *si in servers) { for (ServerInfo *si in servers) {
if ([name isEqual:si.name]) { if ([name isEqual: si.name]) {
si.address = addr; si.address = addr;
addr.host = ENET_HOST_ANY; addr.host = ENET_HOST_ANY;
break; break;
@ -217,29 +217,28 @@ refreshservers()
[servers sort]; [servers sort];
__block int maxmenu = 16; __block int maxmenu = 16;
[servers enumerateObjectsUsingBlock:^( [servers enumerateObjectsUsingBlock:
ServerInfo *si, size_t i, bool *stop) { ^ (ServerInfo *si, size_t i, bool *stop) {
if (si.address.host != ENET_HOST_ANY && si.ping != 9999) { if (si.address.host != ENET_HOST_ANY && si.ping != 9999) {
if (si.protocol != PROTOCOL_VERSION) if (si.protocol != PROTOCOL_VERSION)
si.full = [OFString stringWithFormat: si.full = [OFString stringWithFormat:
@"%@ [different cube protocol]", @"%@ [different cube protocol]", si.name];
si.name];
else else
si.full = [OFString si.full = [OFString stringWithFormat:
stringWithFormat:@"%d\t%d\t%@, %@: %@ %@", @"%d\t%d\t%@, %@: %@ %@",
si.ping, si.numplayers, si.ping, si.numplayers,
si.map.length > 0 ? si.map : @"[unknown]", si.map.length > 0 ? si.map : @"[unknown]",
modestr(si.mode), si.name, si.sdesc]; modestr(si.mode), si.name, si.sdesc];
} else } else
si.full = [OFString stringWithFormat: si.full = [OFString stringWithFormat:
(si.address.host != ENET_HOST_ANY (si.address.host != ENET_HOST_ANY
? @"%@ [waiting for server response]" ? @"%@ [waiting for server response]"
: @"%@ [unknown host]\t"), : @"%@ [unknown host]\t"),
si.name]; si.name];
// cut off too long server descriptions // cut off too long server descriptions
if (si.full.length > 50) if (si.full.length > 50)
si.full = [si.full substringToIndex:50]; si.full = [si.full substringToIndex: 50];
menumanual(1, i, si.full); menumanual(1, i, si.full);
@ -265,11 +264,11 @@ servermenu()
menuset(1); menuset(1);
} }
COMMAND(servermenu, ARG_NONE, ^{ COMMAND(servermenu, ARG_NONE, ^ {
servermenu(); servermenu();
}) })
COMMAND(updatefrommaster, ARG_NONE, ^{ COMMAND(updatefrommaster, ARG_NONE, ^ {
const int MAXUPD = 32000; const int MAXUPD = 32000;
unsigned char buf[MAXUPD]; unsigned char buf[MAXUPD];
unsigned char *reply = retrieveservers(buf, MAXUPD); unsigned char *reply = retrieveservers(buf, MAXUPD);

View file

@ -9,7 +9,7 @@ httpgetsend(ENetAddress *ad, OFString *hostname, OFString *req, OFString *ref,
OFString *agent) OFString *agent)
{ {
if (ad->host == ENET_HOST_ANY) { 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); enet_address_set_host(ad, hostname.UTF8String);
if (ad->host == ENET_HOST_ANY) if (ad->host == ENET_HOST_ANY)
return; return;
@ -26,14 +26,15 @@ httpgetsend(ENetAddress *ad, OFString *hostname, OFString *req, OFString *ref,
return; return;
} }
ENetBuffer buf; ENetBuffer buf;
OFString *httpget = [OFString stringWithFormat:@"GET %@ HTTP/1.0\n" OFString *httpget = [OFString stringWithFormat:
@"Host: %@\n" @"GET %@ HTTP/1.0\n"
@"Referer: %@\n" @"Host: %@\n"
@"User-Agent: %@\n\n", @"Referer: %@\n"
@"User-Agent: %@\n\n",
req, hostname, ref, agent]; req, hostname, ref, agent];
buf.data = (void *)httpget.UTF8String; buf.data = (void *)httpget.UTF8String;
buf.dataLength = httpget.UTF8StringLength; 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); enet_socket_send(mssock, NULL, &buf, 1);
} }
@ -77,8 +78,8 @@ updatemasterserver(int seconds)
{ {
// send alive signal to masterserver every hour of uptime // send alive signal to masterserver every hour of uptime
if (seconds > updmaster) { if (seconds > updmaster) {
OFString *path = [OFString OFString *path = [OFString stringWithFormat:
stringWithFormat:@"%@register.do?action=add", masterpath]; @"%@register.do?action=add", masterpath];
httpgetsend(&masterserver, masterbase, path, @"cubeserver", httpgetsend(&masterserver, masterbase, path, @"cubeserver",
@"Cube Server"); @"Cube Server");
masterrep[0] = 0; masterrep[0] = 0;
@ -100,8 +101,8 @@ checkmasterreply()
unsigned char * unsigned char *
retrieveservers(unsigned char *buf, int buflen) retrieveservers(unsigned char *buf, int buflen)
{ {
OFString *path = OFString *path = [OFString stringWithFormat:
[OFString stringWithFormat:@"%@retrieve.do?item=list", masterpath]; @"%@retrieve.do?item=list", masterpath];
httpgetsend( httpgetsend(
&masterserver, masterbase, path, @"cubeserver", @"Cube Server"); &masterserver, masterbase, path, @"cubeserver", @"Cube Server");
ENetBuffer eb; ENetBuffer eb;
@ -140,8 +141,8 @@ serverms(int mode, int numplayers, int minremain, OFString *smapname,
putint(&p, mode); putint(&p, mode);
putint(&p, numplayers); putint(&p, numplayers);
putint(&p, minremain); putint(&p, minremain);
OFString *mname = [OFString stringWithFormat:@"%@%@", OFString *mname = [OFString stringWithFormat:
(isfull ? @"[FULL] " : @""), smapname]; @"%@%@", (isfull ? @"[FULL] " : @""), smapname];
sendstring(mname, &p); sendstring(mname, &p);
sendstring(serverdesc, &p); sendstring(serverdesc, &p);
buf.dataLength = p - pong; buf.dataLength = p - pong;
@ -157,7 +158,8 @@ servermsinit(OFString *master_, OFString *sdesc, bool listen)
if (!mid) if (!mid)
mid = master; mid = master;
masterpath = @(mid); masterpath = @(mid);
masterbase = [OFString stringWithUTF8String:master length:mid - master]; masterbase = [OFString stringWithUTF8String: master
length: mid - master];
serverdesc = sdesc; serverdesc = sdesc;
if (listen) { if (listen) {

View file

@ -146,10 +146,10 @@ fatal(OFConstantString *s, ...)
va_list args; va_list args;
va_start(args, s); va_start(args, s);
OFString *msg = [[OFString alloc] initWithFormat:s arguments:args]; OFString *msg = [[OFString alloc] initWithFormat: s arguments: args];
va_end(args); va_end(args);
[OFStdOut writeFormat:@"servererror: %@\n", msg]; [OFStdOut writeFormat: @"servererror: %@\n", msg];
exit(1); exit(1);
} }

View file

@ -49,19 +49,19 @@ initsound()
Mix_AllocateChannels(MAXCHAN); Mix_AllocateChannels(MAXCHAN);
} }
COMMAND(music, ARG_1STR, (^(OFString *name) { COMMAND(music, ARG_1STR, (^ (OFString *name) {
if (nosound) if (nosound)
return; return;
stopsound(); stopsound();
if (soundvol && musicvol) { if (soundvol && musicvol) {
name = [name stringByReplacingOccurrencesOfString:@"\\" name = [name stringByReplacingOccurrencesOfString: @"\\"
withString:@"/"]; withString: @"/"];
OFString *path = OFString *path = [OFString stringWithFormat:
[OFString stringWithFormat:@"packages/%@", name]; @"packages/%@", name];
OFIRI *IRI = [Cube.sharedInstance.gameDataIRI OFIRI *IRI = [Cube.sharedInstance.gameDataIRI
IRIByAppendingPathComponent:path]; IRIByAppendingPathComponent: path];
if ((mod = Mix_LoadMUS( if ((mod = Mix_LoadMUS(
IRI.fileSystemRepresentation.UTF8String)) != NULL) { IRI.fileSystemRepresentation.UTF8String)) != NULL) {
@ -77,7 +77,7 @@ static OFMutableArray<OFString *> *snames;
COMMAND(registersound, ARG_1EST, ^int(OFString *name) { COMMAND(registersound, ARG_1EST, ^int(OFString *name) {
int i = 0; int i = 0;
for (OFString *iter in snames) { for (OFString *iter in snames) {
if ([iter isEqual:name]) if ([iter isEqual: name])
return i; return i;
i++; i++;
@ -87,12 +87,12 @@ COMMAND(registersound, ARG_1EST, ^int(OFString *name) {
snames = [[OFMutableArray alloc] init]; snames = [[OFMutableArray alloc] init];
if (samples == nil) if (samples == nil)
samples = [[OFMutableData alloc] samples = [[OFMutableData alloc]
initWithItemSize:sizeof(Mix_Chunk *)]; initWithItemSize: sizeof(Mix_Chunk *)];
[snames addObject:[name stringByReplacingOccurrencesOfString:@"\\" [snames addObject: [name stringByReplacingOccurrencesOfString: @"\\"
withString:@"/"]]; withString: @"/"]];
Mix_Chunk *sample = NULL; Mix_Chunk *sample = NULL;
[samples addItem:&sample]; [samples addItem: &sample];
return samples.count - 1; return samples.count - 1;
}) })
@ -193,12 +193,12 @@ playsound(int n, const OFVector3D *loc)
return; return;
} }
Mix_Chunk **sample = (Mix_Chunk **)[samples mutableItemAtIndex:n]; Mix_Chunk **sample = (Mix_Chunk **)[samples mutableItemAtIndex: n];
if (*sample == NULL) { if (*sample == NULL) {
OFString *path = [OFString OFString *path = [OFString stringWithFormat:
stringWithFormat:@"packages/sounds/%@.wav", snames[n]]; @"packages/sounds/%@.wav", snames[n]];
OFIRI *IRI = [Cube.sharedInstance.gameDataIRI OFIRI *IRI = [Cube.sharedInstance.gameDataIRI
IRIByAppendingPathComponent:path]; IRIByAppendingPathComponent: path];
*sample = Mix_LoadWAV(IRI.fileSystemRepresentation.UTF8String); *sample = Mix_LoadWAV(IRI.fileSystemRepresentation.UTF8String);
@ -218,6 +218,6 @@ playsound(int n, const OFVector3D *loc)
updatechanvol(chan, loc); updatechanvol(chan, loc);
} }
COMMAND(sound, ARG_1INT, ^(int n) { COMMAND(sound, ARG_1INT, ^ (int n) {
playsound(n, NULL); playsound(n, NULL);
}) })

View file

@ -66,7 +66,7 @@ reloadtime(int gun)
return guns[gun].attackdelay; 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), selectgun((a1.length > 0 ? a1.cube_intValue : -1),
(a2.length > 0 ? a2.cube_intValue : -1), (a2.length > 0 ? a2.cube_intValue : -1),
(a3.length > 0 ? a3.cube_intValue : -1)); (a3.length > 0 ? a3.cube_intValue : -1));
@ -117,7 +117,7 @@ playerincrosshair()
OFVector3D o = Player.player1.origin; OFVector3D o = Player.player1.origin;
for (Player *player in players) { for (Player *player in players) {
if (![Player isKindOfClass:Player.class]) if (![Player isKindOfClass: Player.class])
continue; continue;
if (intersect(player, o, worldpos)) if (intersect(player, o, worldpos))
@ -167,9 +167,9 @@ hit(int target, int damage, __kindof DynamicEntity *d, DynamicEntity *at)
OFVector3D o = d.origin; OFVector3D o = d.origin;
if (d == Player.player1) if (d == Player.player1)
selfdamage(damage, (at == Player.player1) ? -1 : -2, at); selfdamage(damage, (at == Player.player1) ? -1 : -2, at);
else if ([d isKindOfClass:Monster.class]) else if ([d isKindOfClass: Monster.class])
[d incurDamage:damage fromEntity:at]; [d incurDamage: damage fromEntity: at];
else if ([d isKindOfClass:Player.class]) { else if ([d isKindOfClass: Player.class]) {
addmsg(1, 4, SV_DAMAGE, target, damage, addmsg(1, 4, SV_DAMAGE, target, damage,
((Player *)d).lifeSequence); ((Player *)d).lifeSequence);
playsound(S_PAIN1 + rnd(5), &o); playsound(S_PAIN1 + rnd(5), &o);
@ -225,8 +225,8 @@ splash(Projectile *p, OFVector3D v, OFVector3D vold, int notthisplayer,
radialeffect(Player.player1, v, -1, qdam, p.owner); radialeffect(Player.player1, v, -1, qdam, p.owner);
[players enumerateObjectsUsingBlock:^( [players enumerateObjectsUsingBlock:
id player, size_t i, bool *stop) { ^ (id player, size_t i, bool *stop) {
if (i == notthisplayer) if (i == notthisplayer)
return; return;
@ -236,8 +236,8 @@ splash(Projectile *p, OFVector3D v, OFVector3D vold, int notthisplayer,
radialeffect(player, v, i, qdam, p.owner); radialeffect(player, v, i, qdam, p.owner);
}]; }];
[Monster.monsters enumerateObjectsUsingBlock:^( [Monster.monsters enumerateObjectsUsingBlock:
Monster *monster, size_t i, bool *stop) { ^ (Monster *monster, size_t i, bool *stop) {
if (i != notthismonster) if (i != notthismonster)
radialeffect(monster, v, i, qdam, p.owner); radialeffect(monster, v, i, qdam, p.owner);
}]; }];
@ -268,7 +268,7 @@ moveprojectiles(float time)
continue; continue;
int qdam = guns[p.gun].damage * (p.owner.quadMillis ? 4 : 1); 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; qdam /= MONSTERDAMAGEFACTOR;
OFVector3D po = p.o, pto = p.to; OFVector3D po = p.o, pto = p.to;
float dist = OFDistanceOfVectors3D(pto, po); float dist = OFDistanceOfVectors3D(pto, po);
@ -336,7 +336,7 @@ shootv(int gun, OFVector3D from, OFVector3D to, DynamicEntity *d, bool local)
case GUN_ICEBALL: case GUN_ICEBALL:
case GUN_SLIMEBALL: case GUN_SLIMEBALL:
pspeed = guns[gun].projspeed; pspeed = guns[gun].projspeed;
if ([d isKindOfClass:Monster.class]) if ([d isKindOfClass: Monster.class])
pspeed /= 2; pspeed /= 2;
newprojectile(from, to, (float)pspeed, local, d, gun); newprojectile(from, to, (float)pspeed, local, d, gun);
break; break;
@ -368,7 +368,7 @@ raydamage(
int qdam = guns[d.gunSelect].damage; int qdam = guns[d.gunSelect].damage;
if (d.quadMillis) if (d.quadMillis)
qdam *= 4; qdam *= 4;
if ([d isKindOfClass:Monster.class]) if ([d isKindOfClass: Monster.class])
qdam /= MONSTERDAMAGEFACTOR; qdam /= MONSTERDAMAGEFACTOR;
if (d.gunSelect == GUN_SG) { if (d.gunSelect == GUN_SG) {
int damage = 0; int damage = 0;
@ -423,7 +423,7 @@ shoot(DynamicEntity *d, OFVector3D targ)
if (d.quadMillis && attacktime > 200) if (d.quadMillis && attacktime > 200)
playsoundc(S_ITEMPUP); playsoundc(S_ITEMPUP);
shootv(d.gunSelect, from, to, d, true); 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), addmsg(1, 8, SV_SHOT, d.gunSelect, (int)(from.x * DMF),
(int)(from.y * DMF), (int)(from.z * DMF), (int)(to.x * DMF), (int)(from.y * DMF), (int)(from.z * DMF), (int)(to.x * DMF),
(int)(to.y * DMF), (int)(to.z * DMF)); (int)(to.y * DMF), (int)(to.z * DMF));
@ -432,7 +432,8 @@ shoot(DynamicEntity *d, OFVector3D targ)
if (guns[d.gunSelect].projspeed) if (guns[d.gunSelect].projspeed)
return; return;
[players enumerateObjectsUsingBlock:^(id player, size_t i, bool *stop) { [players enumerateObjectsUsingBlock:
^ (id player, size_t i, bool *stop) {
if (player != [OFNull null]) if (player != [OFNull null])
raydamage(player, from, to, d, i); raydamage(player, from, to, d, i);
}]; }];
@ -441,6 +442,6 @@ shoot(DynamicEntity *d, OFVector3D targ)
if (monster != d) if (monster != d)
raydamage(monster, from, to, d, -2); raydamage(monster, from, to, d, -2);
if ([d isKindOfClass:Monster.class]) if ([d isKindOfClass: Monster.class])
raydamage(Player.player1, from, to, d, -1); raydamage(Player.player1, from, to, d, -1);
} }

View file

@ -66,7 +66,7 @@ settagareas()
{ {
settag(0, 1); 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) if (ents[i].type == CARROT)
setspawn(i, true); setspawn(i, true);
}]; }];
@ -83,17 +83,17 @@ trigger(int tag, int type, bool savegame)
if (!savegame && type != 3) if (!savegame && type != 3)
playsound(S_RUMBLE, NULL); playsound(S_RUMBLE, NULL);
OFString *aliasname = OFString *aliasname = [OFString stringWithFormat:
[OFString stringWithFormat:@"level_trigger_%d", tag]; @"level_trigger_%d", tag];
if (identexists(aliasname)) if (identexists(aliasname))
execute(aliasname, true); execute(aliasname, true);
if (type == 2) 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); trigger(tag, type, savegame);
}) })
@ -293,7 +293,7 @@ closestent() // used for delent and edit mode ent display
__block int best; __block int best;
__block float bdist = 99999; __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) if (e.type == NOTUSED)
return; return;
@ -308,7 +308,7 @@ closestent() // used for delent and edit mode ent display
return (bdist == 99999 ? -1 : best); return (bdist == 99999 ? -1 : best);
} }
COMMAND(entproperty, ARG_2INT, ^(int prop, int amount) { COMMAND(entproperty, ARG_2INT, ^ (int prop, int amount) {
int e = closestent(); int e = closestent();
if (e < 0) if (e < 0)
return; return;
@ -328,7 +328,7 @@ COMMAND(entproperty, ARG_2INT, ^(int prop, int amount) {
} }
}) })
COMMAND(delent, ARG_NONE, ^{ COMMAND(delent, ARG_NONE, ^ {
int e = closestent(); int e = closestent();
if (e < 0) { if (e < 0) {
conoutf(@"no more entities"); conoutf(@"no more entities");
@ -346,7 +346,7 @@ int
findtype(OFString *what) findtype(OFString *what)
{ {
for (int i = 0; i < MAXENTTYPES; i++) for (int i = 0; i < MAXENTTYPES; i++)
if ([what isEqual:entnames[i]]) if ([what isEqual: entnames[i]])
return i; return i;
conoutf(@"unknown entity type \"%@\"", what); conoutf(@"unknown entity type \"%@\"", what);
return NOTUSED; return NOTUSED;
@ -389,7 +389,7 @@ newentity(int x, int y, int z, OFString *what, int v1, int v2, int v3, int v4)
addmsg(1, 10, SV_EDITENT, ents.count, type, e.x, e.y, e.z, e.attr1, addmsg(1, 10, SV_EDITENT, ents.count, type, e.x, e.y, e.z, e.attr1,
e.attr2, e.attr3, e.attr4); e.attr2, e.attr3, e.attr4);
[ents addObject:e]; [ents addObject: e];
if (type == LIGHT) if (type == LIGHT)
calclight(); calclight();
@ -397,7 +397,7 @@ newentity(int x, int y, int z, OFString *what, int v1, int v2, int v3, int v4)
return e; return e;
} }
COMMAND(clearents, ARG_1STR, ^(OFString *name) { COMMAND(clearents, ARG_1STR, ^ (OFString *name) {
int type = findtype(name); int type = findtype(name);
if (noteditmode() || multiplayer()) if (noteditmode() || multiplayer())
@ -420,7 +420,7 @@ scalecomp(unsigned char c, int intens)
return n; return n;
} }
COMMAND(scalelights, ARG_2INT, ^(int f, int intens) { COMMAND(scalelights, ARG_2INT, ^ (int f, int intens) {
for (Entity *e in ents) { for (Entity *e in ents) {
if (e.type != LIGHT) if (e.type != LIGHT)
continue; continue;
@ -545,14 +545,14 @@ empty_world(int factor, bool force)
} }
} }
COMMAND(mapenlarge, ARG_NONE, ^{ COMMAND(mapenlarge, ARG_NONE, ^ {
empty_world(-1, false); empty_world(-1, false);
}) })
COMMAND(newmap, ARG_1INT, ^(int i) { COMMAND(newmap, ARG_1INT, ^ (int i) {
empty_world(i, false); empty_world(i, false);
}) })
COMMAND(recalc, ARG_NONE, ^{ COMMAND(recalc, ARG_NONE, ^ {
calclight(); calclight();
}) })

View file

@ -15,8 +15,8 @@ struct persistent_entity {
void void
backup(OFString *name, OFString *backupname) backup(OFString *name, OFString *backupname)
{ {
[OFFileManager.defaultManager removeItemAtPath:backupname]; [OFFileManager.defaultManager removeItemAtPath: backupname];
[OFFileManager.defaultManager moveItemAtPath:name toPath:backupname]; [OFFileManager.defaultManager moveItemAtPath: name toPath: backupname];
} }
static OFString *cgzname, *bakname, *pcfname, *mcfname; static OFString *cgzname, *bakname, *pcfname, *mcfname;
@ -25,26 +25,26 @@ static void
setnames(OFString *name) setnames(OFString *name)
{ {
OFCharacterSet *cs = OFCharacterSet *cs =
[OFCharacterSet characterSetWithCharactersInString:@"/\\"]; [OFCharacterSet characterSetWithCharactersInString: @"/\\"];
OFRange range = [name rangeOfCharacterFromSet:cs]; OFRange range = [name rangeOfCharacterFromSet: cs];
OFString *pakname, *mapname; OFString *pakname, *mapname;
if (range.location != OFNotFound) { if (range.location != OFNotFound) {
pakname = [name substringToIndex:range.location]; pakname = [name substringToIndex: range.location];
mapname = [name substringFromIndex:range.location + 1]; mapname = [name substringFromIndex: range.location + 1];
} else { } else {
pakname = @"base"; pakname = @"base";
mapname = name; mapname = name;
} }
cgzname = [[OFString alloc] cgzname = [[OFString alloc] initWithFormat:
initWithFormat:@"packages/%@/%@.cgz", pakname, mapname]; @"packages/%@/%@.cgz", pakname, mapname];
bakname = [[OFString alloc] initWithFormat:@"packages/%@/%@_%d.BAK", bakname = [[OFString alloc] initWithFormat:
pakname, mapname, lastmillis]; @"packages/%@/%@_%d.BAK", pakname, mapname, lastmillis];
pcfname = [[OFString alloc] pcfname = [[OFString alloc] initWithFormat:
initWithFormat:@"packages/%@/package.cfg", pakname]; @"packages/%@/package.cfg", pakname];
mcfname = [[OFString alloc] mcfname = [[OFString alloc] initWithFormat:
initWithFormat:@"packages/%@/%@.cfg", pakname, mapname]; @"packages/%@/%@.cfg", pakname, mapname];
} }
// the optimize routines below are here to reduce the detrimental effects of // the optimize routines below are here to reduce the detrimental effects of
@ -145,7 +145,7 @@ writemap(OFString *mname, int msize, unsigned char *mdata)
setnames(mname); setnames(mname);
backup(cgzname, bakname); backup(cgzname, bakname);
FILE *f = fopen([cgzname cStringWithEncoding:OFLocale.encoding], "wb"); FILE *f = fopen([cgzname cStringWithEncoding: OFLocale.encoding], "wb");
if (!f) { if (!f) {
conoutf(@"could not write map to %@", cgzname); conoutf(@"could not write map to %@", cgzname);
return; return;
@ -159,7 +159,7 @@ OFData *
readmap(OFString *mname) readmap(OFString *mname)
{ {
setnames(mname); setnames(mname);
return [OFData dataWithContentsOfFile:mname]; return [OFData dataWithContentsOfFile: mname];
} }
// save map as .cgz file. uses 2 layers of compression: first does simple // save map as .cgz file. uses 2 layers of compression: first does simple
@ -178,8 +178,8 @@ save_world(OFString *mname)
mname = getclientmap(); mname = getclientmap();
setnames(mname); setnames(mname);
backup(cgzname, bakname); backup(cgzname, bakname);
gzFile f = gzFile f = gzopen([cgzname cStringWithEncoding: OFLocale.encoding],
gzopen([cgzname cStringWithEncoding:OFLocale.encoding], "wb9"); "wb9");
if (!f) { if (!f) {
conoutf(@"could not write map to %@", cgzname); conoutf(@"could not write map to %@", cgzname);
return; return;
@ -258,7 +258,7 @@ save_world(OFString *mname)
settagareas(); settagareas();
} }
COMMAND(savemap, ARG_1STR, ^(OFString *mname) { COMMAND(savemap, ARG_1STR, ^ (OFString *mname) {
save_world(mname); save_world(mname);
}) })
@ -270,8 +270,8 @@ load_world(OFString *mname) // still supports all map formats that have existed
cleardlights(); cleardlights();
pruneundos(0); pruneundos(0);
setnames(mname); setnames(mname);
gzFile f = gzFile f = gzopen([cgzname cStringWithEncoding: OFLocale.encoding],
gzopen([cgzname cStringWithEncoding:OFLocale.encoding], "rb9"); "rb9");
if (!f) { if (!f) {
conoutf(@"could not read map %@", cgzname); conoutf(@"could not read map %@", cgzname);
return; return;
@ -305,7 +305,7 @@ load_world(OFString *mname) // still supports all map formats that have existed
e.attr2 = tmp.attr2; e.attr2 = tmp.attr2;
e.attr3 = tmp.attr3; e.attr3 = tmp.attr3;
e.attr4 = tmp.attr4; e.attr4 = tmp.attr4;
[ents addObject:e]; [ents addObject: e];
if (e.type == LIGHT) { if (e.type == LIGHT) {
if (!e.attr2) if (!e.attr2)
@ -396,14 +396,14 @@ load_world(OFString *mname) // still supports all map formats that have existed
startmap(mname); startmap(mname);
for (int l = 0; l < 256; l++) { for (int l = 0; l < 256; l++) {
// can this be done smarter? // can this be done smarter?
OFString *aliasname = OFString *aliasname = [OFString stringWithFormat:
[OFString stringWithFormat:@"level_trigger_%d", l]; @"level_trigger_%d", l];
if (identexists(aliasname)) if (identexists(aliasname))
alias(aliasname, @""); alias(aliasname, @"");
} }
OFIRI *gameDataIRI = Cube.sharedInstance.gameDataIRI; OFIRI *gameDataIRI = Cube.sharedInstance.gameDataIRI;
execfile([gameDataIRI execfile([gameDataIRI
IRIByAppendingPathComponent:@"data/default_map_settings.cfg"]); IRIByAppendingPathComponent: @"data/default_map_settings.cfg"]);
execfile([gameDataIRI IRIByAppendingPathComponent:pcfname]); execfile([gameDataIRI IRIByAppendingPathComponent: pcfname]);
execfile([gameDataIRI IRIByAppendingPathComponent:mcfname]); execfile([gameDataIRI IRIByAppendingPathComponent: mcfname]);
} }

View file

@ -205,7 +205,7 @@ dodynlight(OFVector3D vold, OFVector3D v, int reach, int strength,
{ {
if (!reach) if (!reach)
reach = dynlight; reach = dynlight;
if ([owner isKindOfClass:Monster.class]) if ([owner isKindOfClass: Monster.class])
reach = reach / 2; reach = reach / 2;
if (!reach) if (!reach)
return; return;
@ -227,11 +227,11 @@ dodynlight(OFVector3D vold, OFVector3D v, int reach, int strength,
if (dlights == nil) if (dlights == nil)
dlights = [[OFMutableData alloc] dlights = [[OFMutableData alloc]
initWithItemSize:sizeof(struct block *)]; initWithItemSize: sizeof(struct block *)];
// backup area before rendering in dynlight // backup area before rendering in dynlight
struct block *copy = blockcopy(&b); struct block *copy = blockcopy(&b);
[dlights addItem:&copy]; [dlights addItem: &copy];
Entity *l = [Entity entity]; Entity *l = [Entity entity];
l.x = v.x; l.x = v.x;

View file

@ -11,7 +11,7 @@ float rdist[NUMRAYS];
bool ocull = true; bool ocull = true;
float odist = 256; float odist = 256;
COMMAND(toggleocull, ARG_NONE, ^{ COMMAND(toggleocull, ARG_NONE, ^ {
ocull = !ocull; ocull = !ocull;
}) })