From: dsc Date: Mon, 6 Jun 2011 08:38:55 +0000 (-0700) Subject: Minor reorg of unit crap. X-Git-Url: http://git.less.ly:3516/?a=commitdiff_plain;h=91c5d9b12cc1eea9ee728c8641a8c8d6b0f17aad;p=tanks-ios.git Minor reorg of unit crap. --- diff --git a/src/Tanks.h b/src/Tanks.h index 6a4d3c0..a2a448b 100644 --- a/src/Tanks.h +++ b/src/Tanks.h @@ -1,9 +1,14 @@ #ifndef TANKS_H #define TANKS_H +#ifdef DEBUG +#define TANKS_DEBUG_LOG 1 +#else #define TANKS_DEBUG_LOG 0 +#endif // DEBUG -#endif +#endif // TANKS_H #import "TanksMacros.h" +#import "qq/NSSet+QQExtensions.h" #import "render/QQSparrowExtensions.h" diff --git a/src/TanksMacros.h b/src/TanksMacros.h index e85b6b2..b36a57c 100644 --- a/src/TanksMacros.h +++ b/src/TanksMacros.h @@ -1,7 +1,7 @@ #ifndef TANKS_MACROS_H #define TANKS_MACROS_H -#define qqBoolToString(__val) ((__val)?("YES"):("NO")) +#define b2s(__val) ((__val)?("YES"):("NO")) #endif \ No newline at end of file diff --git a/src/game/QQGame.h b/src/game/QQGame.h index 1c5e0a4..f69644d 100644 --- a/src/game/QQGame.h +++ b/src/game/QQGame.h @@ -1,19 +1,21 @@ #import "Sparrow.h" -#import "qq/QQNotificationCenter.h" +#import "qq/event/QQNotificationCenter.h" + #import "physics/QQWorld.h" #import "physics/debug/QQPhysicsDebugView.h" + #import "game/QQGameTime.h" -#import "game/actor/QQActor.h" +#import "game/unit/QQActor.h" #import "game/map/QQLevel.h" + @interface QQGame : QQNotificationCenter { @private float _now; float _elapsed; long _ticks; - long _realtime; BOOL _running; BOOL _debugDrawingEnabled; @@ -48,14 +50,16 @@ @property (nonatomic, readonly, retain) NSSet* actors; -- (void) tick; +- (void) tick:(float)elapsed; +/** Alerts the game to a new actor. */ - (QQGame*) addActor:(QQActor*)actor; -// - (QQGame*) addActorAndShape:(QQActor*)actor; - (QQGame*) removeActor:(QQActor*)actor; -- (QQGame*) destroyActor:(QQActor*)actor; +/** Starts/unpauses the game. */ - (void) start; + +/** Pauses the game. */ - (void) stop; diff --git a/src/game/QQGame.mm b/src/game/QQGame.mm index 1a06899..ad60683 100644 --- a/src/game/QQGame.mm +++ b/src/game/QQGame.mm @@ -1,16 +1,11 @@ #import #import "Tanks.h" -#import "qq/NSSet+QQExtensions.h" #import "game/QQGame.h" -#import "game/actor/QQActors.h" +#import "game/unit/QQActors.h" #import "physics/event/QQContactNotification.h" -static QQGame* _CurrentGame = NULL; - - - @interface QQGame () @property (nonatomic, readwrite, retain) NSSet* actors; @@ -19,8 +14,17 @@ static QQGame* _CurrentGame = NULL; @end +static QQGame* _CurrentGame = NULL; + @implementation QQGame ++ (QQGame*) current { + if (!_CurrentGame) + [[[QQGame alloc] init] // init assigns to singleton, but singleton is a weakref, + autorelease]; // XXX: so game will still be released if not retained + return _CurrentGame; +} + - (id) init { if (_CurrentGame) { [self release]; @@ -32,6 +36,8 @@ static QQGame* _CurrentGame = NULL; } if ( (self = [super init]) ){ + // We set the singleton here, in init, in case someone referenced during initialization + // asks for the current game (causing a loop). _CurrentGame = self; _now = 0; _ticks = 0; @@ -64,7 +70,9 @@ static QQGame* _CurrentGame = NULL; [[[QQTank alloc] initAtX:wMax/6 y:hMax/6 width:50 height:50 color:0xFF0071] autorelease]; [[[QQUnit alloc] initAtX:wMax/3 y:hMax/2 width:50 height:50 color:0x4596FF] autorelease]; +#if TANKS_DEBUG_LOG [_stage addEventListener:@selector(logEvent:) atObject:self forType:SP_EVENT_TYPE_ANY]; +#endif } return self; } @@ -117,7 +125,22 @@ static QQGame* _CurrentGame = NULL; /// methods +- (void) tick:(float)elapsed { + if (!self.isPaused) return; + _ticks++; + _elapsed = elapsed; + _now += elapsed; + + for (QQActor* actor in self.actors) + [actor tick]; + [self.world step]; + for (QQActor* actor in self.actors) + [actor draw]; +} + - (QQGame*) addActor:(QQActor*)actor { + // Create a new copy of the mutated set on change to avoid the need to copy + // on every iteration, which happens WAAAY more often self.actors = [self.actors setByAddingObject:actor]; // if (actor.isActive) // _awake = [_awake setByAddingObject:actor]; @@ -129,6 +152,8 @@ static QQGame* _CurrentGame = NULL; } - (QQGame*) removeActor:(QQActor*)actor { + // Create a new copy of the mutated set on change to avoid the need to copy + // on every iteration, which happens WAAAY more often self.actors = [self.actors setByRemovingObject:actor]; // if (actor.isActive) // _awake = [_awake setByRemovingObject:actor]; @@ -136,58 +161,27 @@ static QQGame* _CurrentGame = NULL; // _units = [_units setByRemovingObject:actor]; // if ([actor isKindOfClass:[QQBullet class]]) // _bullets = [_bullets setByRemovingObject:actor]; - return self; -} - -- (QQGame*) destroyActor:(QQActor*)actor { [_world destroy:actor]; - return [self removeActor:actor]; -} - - -- (void) tick { -#if TANKS_DEBUG_LOG - if ((_ticks % 100) == 0) { - NSLog(@"[%ld] Time passed since last 100 frames: %f", _ticks, _elapsed); - for (QQActor* actor in self.actors) { - b2Vec2 v = actor.body->GetLinearVelocity(); - NSLog(@"[%@ impulse:(%f,%f)]", actor, v.x,v.y); - } - } -#endif - - for (QQActor* actor in self.actors) - [actor tick]; - [self.world step]; - for (QQActor* actor in self.actors) - if (!actor.dead) [actor draw]; + return self; } - - (void) start { - if (!_running) { - _running = YES; - [_stage addEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME]; - } + if (_running) return; + _running = YES; + [_stage addEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME]; } - (void) stop { - if (_running) { - [_stage removeEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME]; - _running = NO; - } + if (!_running) return; + [_stage removeEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME]; + _running = NO; } /// event handlers - (void) onEnterFrame:(SPEnterFrameEvent*)event { - if (_running) { - _ticks++; - _elapsed = event.passedTime; - _now += _elapsed; - [self tick]; - } + [self tick:event.passedTime]; } - (void) onCollide:(QQContactNotification*)msg { @@ -195,23 +189,17 @@ static QQGame* _CurrentGame = NULL; } - (void) logEvent:(SPEvent*)evt { + // ignore enter-frame events, as they happen constantly if ([evt.type isEqualToString:SP_EVENT_TYPE_ENTER_FRAME]) return; NSLog(@"%@", evt); } + - (NSString*) description { - return [NSString stringWithFormat:@"<%@: %x> {running=%s, #actors=%i, time={now=%f, elapsed=%f, ticks=%l}}", - [self class], (long)self, qqBoolToString(self.isPaused), [self.actors count], + return [NSString stringWithFormat:@"<%@: %p> {running=%s, #actors=%i, time={now=%f, elapsed=%f, ticks=%l}}", + [self class], (long)self, b2s(self.isPaused), [self.actors count], self.now, self.elapsed, self.ticks]; } -+ (QQGame*) current { - if (!_CurrentGame) - [[[QQGame alloc] init] // init assigns to singleton, but singleton is a weakref, - autorelease]; // XXX: so game will still be released if not retained... - return _CurrentGame; -} - - @end \ No newline at end of file diff --git a/src/game/QQThing.h b/src/game/QQThing.h index e10aa65..8ee089f 100644 --- a/src/game/QQThing.h +++ b/src/game/QQThing.h @@ -1,4 +1,4 @@ -#import "qq/QQObservable.h" +#import "qq/event/QQObservable.h" @class QQGame; @class QQWorld; diff --git a/src/game/ability/QQStat.h b/src/game/ability/QQStats.h similarity index 100% rename from src/game/ability/QQStat.h rename to src/game/ability/QQStats.h diff --git a/src/game/ability/QQStat.mm b/src/game/ability/QQStats.mm similarity index 100% rename from src/game/ability/QQStat.mm rename to src/game/ability/QQStats.mm diff --git a/src/game/actor/QQActors.h b/src/game/actor/QQActors.h deleted file mode 100644 index f7bad80..0000000 --- a/src/game/actor/QQActors.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "game/actor/QQActor.h" -#import "game/actor/QQActorDelegate.h" -#import "game/actor/QQUnit.h" -#import "game/actor/bullet/QQBullet.h" -#import "game/actor/unit/QQTank.h" diff --git a/src/game/actor/QQIUnit.h b/src/game/actor/QQIUnit.h deleted file mode 100644 index 15878ea..0000000 --- a/src/game/actor/QQIUnit.h +++ /dev/null @@ -1,16 +0,0 @@ -#import "game/actor/QQActor.h" -#import "game/QQThing.h" - - -@protocol QQUnit - -@property (nonatomic, readonly) BOOL canAttack; - -- (void) attackTarget:(QQActor*)actor; -- (void) attackToward:(CGPoint)point; -- (void) attackTowardX:(float)x y:(float)y; - - -@end - -//typedef id QQUnit; diff --git a/src/game/actor/QQActor.h b/src/game/unit/QQActor.h similarity index 93% rename from src/game/actor/QQActor.h rename to src/game/unit/QQActor.h index 4eaaf09..b5dc695 100644 --- a/src/game/actor/QQActor.h +++ b/src/game/unit/QQActor.h @@ -1,11 +1,11 @@ #include -#import "qq/QQNotificationProxy.h" +#import "qq/event/QQNotificationProxy.h" #import "game/QQThing.h" #import "game/QQActive.h" #import "game/QQPhysical.h" #import "game/QQDisplayable.h" -#import "game/actor/QQActorDelegate.h" +#import "game/unit/QQActorDelegate.h" #import "physics/QQWorld.h" @class QQGame; diff --git a/src/game/actor/QQActor.mm b/src/game/unit/QQActor.mm similarity index 89% rename from src/game/actor/QQActor.mm rename to src/game/unit/QQActor.mm index 241226b..8421992 100644 --- a/src/game/actor/QQActor.mm +++ b/src/game/unit/QQActor.mm @@ -104,20 +104,19 @@ /// methods - (void) destroy { - NSLog(@"retainCount=%i", [self retainCount]); - if (!self.dead) { - _dead = YES; - self.shape = nil; - [self.game destroyActor:self]; - NSLog(@"%@ \v\tretainCount=%i \v\tgame=%@", self, [self retainCount], self.game); - } + if (self.dead) return; + + _dead = YES; + self.shape = nil; + [self.game removeActor:self]; } - (void) tick { - if (!self.dead) { - [self.cooldowns makeObjectsPerformSelector:@selector(tick:)withObject:self.game.time]; - if (self.isActive) [self act]; - } + if (self.dead) return; + + [self.cooldowns makeObjectsPerformSelector:@selector(tick:) withObject:self.game.time]; + if (self.isActive) + [self act]; } - (void) act {} @@ -127,6 +126,8 @@ } - (void) draw { + if (self.dead) return; + [self updateShape]; } diff --git a/src/game/actor/QQActorDelegate.h b/src/game/unit/QQActorDelegate.h similarity index 100% rename from src/game/actor/QQActorDelegate.h rename to src/game/unit/QQActorDelegate.h diff --git a/src/game/unit/QQActors.h b/src/game/unit/QQActors.h new file mode 100644 index 0000000..1bb6ca8 --- /dev/null +++ b/src/game/unit/QQActors.h @@ -0,0 +1,5 @@ +#import "game/unit/QQActor.h" +#import "game/unit/QQActorDelegate.h" +#import "game/unit/QQUnit.h" +#import "game/unit/QQBullet.h" +#import "game/unit/QQTank.h" diff --git a/src/game/actor/bullet/QQBullet.h b/src/game/unit/QQBullet.h similarity index 85% rename from src/game/actor/bullet/QQBullet.h rename to src/game/unit/QQBullet.h index 4a61675..b4a6241 100644 --- a/src/game/actor/bullet/QQBullet.h +++ b/src/game/unit/QQBullet.h @@ -1,4 +1,4 @@ -#import "game/actor/QQUnit.h" +#import "game/unit/QQUnit.h" @interface QQBullet : QQUnit { diff --git a/src/game/actor/bullet/QQBullet.mm b/src/game/unit/QQBullet.mm similarity index 100% rename from src/game/actor/bullet/QQBullet.mm rename to src/game/unit/QQBullet.mm diff --git a/src/game/actor/unit/QQTank.h b/src/game/unit/QQTank.h similarity index 84% rename from src/game/actor/unit/QQTank.h rename to src/game/unit/QQTank.h index ee8c4c1..c4c5971 100644 --- a/src/game/actor/unit/QQTank.h +++ b/src/game/unit/QQTank.h @@ -1,4 +1,4 @@ -#import "game/actor/QQUnit.h" +#import "game/unit/QQUnit.h" #import "game/ability/QQCooldown.h" @interface QQTank : QQUnit { diff --git a/src/game/actor/unit/QQTank.mm b/src/game/unit/QQTank.mm similarity index 98% rename from src/game/actor/unit/QQTank.mm rename to src/game/unit/QQTank.mm index 4b2622b..edd130a 100644 --- a/src/game/actor/unit/QQTank.mm +++ b/src/game/unit/QQTank.mm @@ -1,7 +1,7 @@ #import "QQTank.h" #import "render/QQSparrowExtensions.h" #import "game/QQGame.h" -#import "game/actor/bullet/QQBullet.h" +#import "game/unit/QQBullet.h" // private interface diff --git a/src/game/actor/QQUnit.h b/src/game/unit/QQUnit.h similarity index 89% rename from src/game/actor/QQUnit.h rename to src/game/unit/QQUnit.h index e963b45..6fdee22 100644 --- a/src/game/actor/QQUnit.h +++ b/src/game/unit/QQUnit.h @@ -2,8 +2,8 @@ #import "Sparrow.h" #import "physics/QQWorld.h" -#import "game/actor/QQActor.h" -#import "game/actor/QQActorDelegate.h" +#import "game/unit/QQActor.h" +#import "game/unit/QQActorDelegate.h" #import "render/QQSparrowExtensions.h" diff --git a/src/game/actor/QQUnit.mm b/src/game/unit/QQUnit.mm similarity index 98% rename from src/game/actor/QQUnit.mm rename to src/game/unit/QQUnit.mm index f68c5fc..0959cfb 100644 --- a/src/game/actor/QQUnit.mm +++ b/src/game/unit/QQUnit.mm @@ -1,7 +1,7 @@ #include #import "Sparrow.h" -#import "game/actor/QQUnit.h" +#import "game/unit/QQUnit.h" #import "game/QQGame.h" #import "render/QQSparrowExtensions.h" diff --git a/src/physics/QQWorld.h b/src/physics/QQWorld.h index 3b47e73..54bf6c9 100644 --- a/src/physics/QQWorld.h +++ b/src/physics/QQWorld.h @@ -1,6 +1,6 @@ #include -#import "qq/QQNotifier.h" -#import "qq/QQNotificationProxy.h" +#import "qq/event/QQNotifier.h" +#import "qq/event/QQNotificationProxy.h" #import "physics/event/QQPhysicalEvents.h" #import "physics/debug/QQGLESDebugDraw.h" #import "game/QQPhysical.h" diff --git a/src/physics/event/QQContactNotification.h b/src/physics/event/QQContactNotification.h index 4c173f3..b7a815c 100644 --- a/src/physics/event/QQContactNotification.h +++ b/src/physics/event/QQContactNotification.h @@ -1,6 +1,7 @@ -#include "qq/QQNotification.h" #include -#include "game/actor/QQActor.h" + +#import "qq/event/QQNotification.h" +#import "game/unit/QQActor.h" @interface QQContactNotification : QQNotification { @@ -8,10 +9,6 @@ b2Contact* _contact; } -- (id) initWithName:(NSString*)name contact:(b2Contact*)contact; -- (id) initWithName:(NSString*)name object:(id)obj contact:(b2Contact*)contact; -- (id) initWithName:(NSString*)name object:(id)obj userInfo:(NSDictionary*)info contact:(b2Contact*)contact; - @property (nonatomic, readonly) b2Contact* contact; @property (nonatomic, readonly) QQActor* actorA; @@ -23,6 +20,11 @@ @property (nonatomic, readonly) b2Body* bodyB; +- (id) initWithName:(NSString*)name contact:(b2Contact*)contact; +- (id) initWithName:(NSString*)name object:(id)obj contact:(b2Contact*)contact; +- (id) initWithName:(NSString*)name object:(id)obj userInfo:(NSDictionary*)info contact:(b2Contact*)contact; + + + (QQContactNotification*) notification:(NSString*)name contact:(b2Contact*)contact; + (QQContactNotification*) notification:(NSString*)name object:(id)obj contact:(b2Contact*)contact; + (QQContactNotification*) notification:(NSString*)name object:(id)obj userInfo:(NSDictionary*)info contact:(b2Contact*)contact; diff --git a/src/physics/event/QQPhysicalEvents.mm b/src/physics/event/QQPhysicalEvents.mm index 6d722f0..bfba110 100644 --- a/src/physics/event/QQPhysicalEvents.mm +++ b/src/physics/event/QQPhysicalEvents.mm @@ -1,4 +1,4 @@ -#include "QQPhysicalEvents.h" +#import "QQPhysicalEvents.h" void QQContactListener::BeginContact(b2Contact* contact) { diff --git a/src/qq/QQNotification.h b/src/qq/event/QQNotification.h similarity index 100% rename from src/qq/QQNotification.h rename to src/qq/event/QQNotification.h diff --git a/src/qq/QQNotification.mm b/src/qq/event/QQNotification.mm similarity index 98% rename from src/qq/QQNotification.mm rename to src/qq/event/QQNotification.mm index e4b2448..d72e3f4 100644 --- a/src/qq/QQNotification.mm +++ b/src/qq/event/QQNotification.mm @@ -1,4 +1,4 @@ -#include "qq/QQNotification.h" +#import "qq/event/QQNotification.h" @implementation QQNotification diff --git a/src/qq/QQNotificationCenter.h b/src/qq/event/QQNotificationCenter.h similarity index 94% rename from src/qq/QQNotificationCenter.h rename to src/qq/event/QQNotificationCenter.h index 65c60ec..661d909 100644 --- a/src/qq/QQNotificationCenter.h +++ b/src/qq/event/QQNotificationCenter.h @@ -1,4 +1,4 @@ -#import "qq/QQNotifier.h" +#import "qq/event/QQNotifier.h" @interface QQNotificationCenter : NSNotificationCenter { @private diff --git a/src/qq/QQNotificationCenter.mm b/src/qq/event/QQNotificationCenter.mm similarity index 98% rename from src/qq/QQNotificationCenter.mm rename to src/qq/event/QQNotificationCenter.mm index 232c794..64e5703 100644 --- a/src/qq/QQNotificationCenter.mm +++ b/src/qq/event/QQNotificationCenter.mm @@ -1,4 +1,4 @@ -#import "qq/QQNotificationCenter.h" +#import "qq/event/QQNotificationCenter.h" @implementation QQNotificationCenter diff --git a/src/qq/QQNotificationProxy.h b/src/qq/event/QQNotificationProxy.h similarity index 92% rename from src/qq/QQNotificationProxy.h rename to src/qq/event/QQNotificationProxy.h index 4b99c54..0030b68 100644 --- a/src/qq/QQNotificationProxy.h +++ b/src/qq/event/QQNotificationProxy.h @@ -1,4 +1,4 @@ -#import "qq/QQNotifier.h" +#import "qq/event/QQNotifier.h" /** * Proxies all QQObservableNotifier calls to another QQObservableNotifier. diff --git a/src/qq/QQNotificationProxy.mm b/src/qq/event/QQNotificationProxy.mm similarity index 98% rename from src/qq/QQNotificationProxy.mm rename to src/qq/event/QQNotificationProxy.mm index 39b4697..3d2c3ee 100644 --- a/src/qq/QQNotificationProxy.mm +++ b/src/qq/event/QQNotificationProxy.mm @@ -1,4 +1,4 @@ -#import "qq/QQNotificationProxy.h" +#import "qq/event/QQNotificationProxy.h" @implementation QQNotificationProxy diff --git a/src/qq/QQNotifier.h b/src/qq/event/QQNotifier.h similarity index 95% rename from src/qq/QQNotifier.h rename to src/qq/event/QQNotifier.h index 1ca2a5d..445d501 100644 --- a/src/qq/QQNotifier.h +++ b/src/qq/event/QQNotifier.h @@ -1,4 +1,4 @@ -#import "qq/QQObservable.h" +#import "qq/event/QQObservable.h" @protocol QQNotifier diff --git a/src/qq/QQNotifiers.h b/src/qq/event/QQNotifiers.h similarity index 94% rename from src/qq/QQNotifiers.h rename to src/qq/event/QQNotifiers.h index f36c283..8eeab9a 100644 --- a/src/qq/QQNotifiers.h +++ b/src/qq/event/QQNotifiers.h @@ -1,6 +1,10 @@ -/** - * Various macros relating to notification dispatch. - */ +#import "qq/event/QQObservable.h" +#import "qq/event/QQNotifier.h" +#import "qq/event/QQNotification.h" +#import "qq/event/QQNotificationCenter.h" +#import "qq/event/QQNotificationProxy.h" + + /** * As a QQNotificationProxy, but via encapsulation. diff --git a/src/qq/QQObservable.h b/src/qq/event/QQObservable.h similarity index 100% rename from src/qq/QQObservable.h rename to src/qq/event/QQObservable.h diff --git a/tanks.xcodeproj/project.pbxproj b/tanks.xcodeproj/project.pbxproj index 79377d3..8bd63cc 100644 --- a/tanks.xcodeproj/project.pbxproj +++ b/tanks.xcodeproj/project.pbxproj @@ -12,13 +12,7 @@ 492D80CC138B231B0042D918 /* QQPhysical.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D80CB138B231B0042D918 /* QQPhysical.h */; }; 492D80E4138BA4910042D918 /* QQCooldown.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D80DE138BA4910042D918 /* QQCooldown.h */; }; 492D80E5138BA4910042D918 /* QQCooldown.mm in Sources */ = {isa = PBXBuildFile; fileRef = 492D80DF138BA4910042D918 /* QQCooldown.mm */; }; - 492D80EB138BA4B40042D918 /* QQTank.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D80E9138BA4B40042D918 /* QQTank.h */; }; - 492D80EC138BA4B40042D918 /* QQTank.mm in Sources */ = {isa = PBXBuildFile; fileRef = 492D80EA138BA4B40042D918 /* QQTank.mm */; }; - 492D80F0138BA4BC0042D918 /* QQBullet.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D80EE138BA4BC0042D918 /* QQBullet.h */; }; - 492D80F1138BA4BC0042D918 /* QQBullet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 492D80EF138BA4BC0042D918 /* QQBullet.mm */; }; 492D80F3138BA4CE0042D918 /* QQThing.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D80F2138BA4CE0042D918 /* QQThing.h */; }; - 492D80FD138BCA840042D918 /* QQUnit.mm in Sources */ = {isa = PBXBuildFile; fileRef = 492D80FC138BCA840042D918 /* QQUnit.mm */; }; - 492D80FF138BCC9F0042D918 /* QQActorDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D80FE138BCC9F0042D918 /* QQActorDelegate.h */; }; 492D810C138C07540042D918 /* BEParallaxSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D8101138C07540042D918 /* BEParallaxSprite.h */; }; 492D810D138C07540042D918 /* BEParallaxSprite.m in Sources */ = {isa = PBXBuildFile; fileRef = 492D8102138C07540042D918 /* BEParallaxSprite.m */; }; 492D810E138C07540042D918 /* SHCircle.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D8103138C07540042D918 /* SHCircle.h */; }; @@ -31,18 +25,12 @@ 492D8115138C07540042D918 /* SXFPSMeter.h in Headers */ = {isa = PBXBuildFile; fileRef = 492D810A138C07540042D918 /* SXFPSMeter.h */; }; 492D8116138C07540042D918 /* SXFPSMeter.m in Sources */ = {isa = PBXBuildFile; fileRef = 492D810B138C07540042D918 /* SXFPSMeter.m */; }; 494DE9971376927C00FDB3D7 /* libBox2D.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DE9961376927C00FDB3D7 /* libBox2D.a */; }; - 4978AD0E1395E5CE00930447 /* QQActors.h in Headers */ = {isa = PBXBuildFile; fileRef = 4978AD0D1395E5CE00930447 /* QQActors.h */; }; 4978AD141396139100930447 /* Tanks.h in Headers */ = {isa = PBXBuildFile; fileRef = 4978AD131396139100930447 /* Tanks.h */; }; 4978AD1A1396302300930447 /* QQContactNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 4978AD161396302300930447 /* QQContactNotification.h */; }; 4978AD1B1396302300930447 /* QQContactNotification.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4978AD171396302300930447 /* QQContactNotification.mm */; }; 4978AD1C1396302300930447 /* QQPhysicalEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 4978AD181396302300930447 /* QQPhysicalEvents.h */; }; 4978AD1D1396302300930447 /* QQPhysicalEvents.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4978AD191396302300930447 /* QQPhysicalEvents.mm */; }; - 4978AD251396302F00930447 /* QQNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 4978AD1F1396302F00930447 /* QQNotification.h */; }; - 4978AD261396302F00930447 /* QQNotification.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4978AD201396302F00930447 /* QQNotification.mm */; }; - 4978AD271396302F00930447 /* QQNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 4978AD211396302F00930447 /* QQNotifier.h */; }; - 4978AD2A1396302F00930447 /* QQObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4978AD241396302F00930447 /* QQObservable.h */; }; 4995ABB213816CCE00334646 /* QQGame.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A513812427007A6598 /* QQGame.h */; }; - 4995ABB313816CD400334646 /* QQUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A213812427007A6598 /* QQUnit.h */; }; 4995ABF91381C46B00334646 /* Icon-iPad.png in Resources */ = {isa = PBXBuildFile; fileRef = 4995ABCA1381C46B00334646 /* Icon-iPad.png */; }; 4995ABFA1381C46B00334646 /* Icon-iPhone.png in Resources */ = {isa = PBXBuildFile; fileRef = 4995ABCB1381C46B00334646 /* Icon-iPhone.png */; }; 4995AC261381C5ED00334646 /* Icon-iPhone@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4995ABCC1381C46B00334646 /* Icon-iPhone@2x.png */; }; @@ -54,10 +42,26 @@ 49966919136930E8006E8125 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49966914136930E8006E8125 /* OpenAL.framework */; }; 4996691A136930E8006E8125 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49966915136930E8006E8125 /* OpenGLES.framework */; }; 4996691B136930E8006E8125 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49966916136930E8006E8125 /* QuartzCore.framework */; }; - 499D6A9C1399BFB8008E4C0D /* QQNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 499D6A981399BFB8008E4C0D /* QQNotificationCenter.h */; }; - 499D6A9D1399BFB8008E4C0D /* QQNotificationCenter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499D6A991399BFB8008E4C0D /* QQNotificationCenter.mm */; }; - 499D6A9E1399BFB8008E4C0D /* QQNotificationProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 499D6A9A1399BFB8008E4C0D /* QQNotificationProxy.h */; }; - 499D6A9F1399BFB8008E4C0D /* QQNotificationProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499D6A9B1399BFB8008E4C0D /* QQNotificationProxy.mm */; }; + 499F65C9139CBC0C00309DE4 /* QQNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65C0139CBC0C00309DE4 /* QQNotification.h */; }; + 499F65CA139CBC0C00309DE4 /* QQNotification.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499F65C1139CBC0C00309DE4 /* QQNotification.mm */; }; + 499F65CB139CBC0C00309DE4 /* QQNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65C2139CBC0C00309DE4 /* QQNotificationCenter.h */; }; + 499F65CC139CBC0C00309DE4 /* QQNotificationCenter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499F65C3139CBC0C00309DE4 /* QQNotificationCenter.mm */; }; + 499F65CD139CBC0C00309DE4 /* QQNotificationProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65C4139CBC0C00309DE4 /* QQNotificationProxy.h */; }; + 499F65CE139CBC0C00309DE4 /* QQNotificationProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499F65C5139CBC0C00309DE4 /* QQNotificationProxy.mm */; }; + 499F65CF139CBC0C00309DE4 /* QQNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65C6139CBC0C00309DE4 /* QQNotifier.h */; }; + 499F65D0139CBC0C00309DE4 /* QQNotifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65C7139CBC0C00309DE4 /* QQNotifiers.h */; }; + 499F65D1139CBC0C00309DE4 /* QQObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65C8139CBC0C00309DE4 /* QQObservable.h */; }; + 499F65E1139CBCBA00309DE4 /* QQActor.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65D7139CBCBA00309DE4 /* QQActor.h */; }; + 499F65E2139CBCBA00309DE4 /* QQActor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499F65D8139CBCBA00309DE4 /* QQActor.mm */; }; + 499F65E3139CBCBA00309DE4 /* QQActorDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65D9139CBCBA00309DE4 /* QQActorDelegate.h */; }; + 499F65E4139CBCBA00309DE4 /* QQActors.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65DA139CBCBA00309DE4 /* QQActors.h */; }; + 499F65E5139CBCBA00309DE4 /* QQBullet.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65DB139CBCBA00309DE4 /* QQBullet.h */; }; + 499F65E6139CBCBA00309DE4 /* QQBullet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499F65DC139CBCBA00309DE4 /* QQBullet.mm */; }; + 499F65E7139CBCBA00309DE4 /* QQTank.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65DD139CBCBA00309DE4 /* QQTank.h */; }; + 499F65E8139CBCBA00309DE4 /* QQTank.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499F65DE139CBCBA00309DE4 /* QQTank.mm */; }; + 499F65E9139CBCBA00309DE4 /* QQUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65DF139CBCBA00309DE4 /* QQUnit.h */; }; + 499F65EA139CBCBA00309DE4 /* QQUnit.mm in Sources */ = {isa = PBXBuildFile; fileRef = 499F65E0139CBCBA00309DE4 /* QQUnit.mm */; }; + 499F65EC139CBCC000309DE4 /* QQGameTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 499F65EB139CBCC000309DE4 /* QQGameTime.h */; }; 49D8645D1392DB2800BC341C /* QQShape.h in Headers */ = {isa = PBXBuildFile; fileRef = 49D8645B1392DB2800BC341C /* QQShape.h */; }; 49D8645E1392DB2800BC341C /* QQShape.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49D8645C1392DB2800BC341C /* QQShape.mm */; }; 49DA67D4137847A7004841E9 /* QQWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = 49DA67D2137847A7004841E9 /* QQWorld.h */; }; @@ -66,8 +70,6 @@ 49E3C5D3139A73E700A3958A /* NSSet+QQExtensions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E3C5D1139A73E700A3958A /* NSSet+QQExtensions.mm */; }; 49E67E11139B341600DDFC07 /* TanksMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E67E10139B341600DDFC07 /* TanksMacros.h */; }; 49E834A713812427007A6598 /* QQActive.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E8349E13812427007A6598 /* QQActive.h */; }; - 49E834A813812427007A6598 /* QQActor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A013812427007A6598 /* QQActor.h */; }; - 49E834A913812427007A6598 /* QQActor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834A113812427007A6598 /* QQActor.mm */; }; 49E834AC13812427007A6598 /* QQDisplayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A413812427007A6598 /* QQDisplayable.h */; }; 49E834AE13812427007A6598 /* QQGame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834A613812427007A6598 /* QQGame.mm */; }; 49E834BE13812555007A6598 /* QQAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834B013812555007A6598 /* QQAppDelegate.h */; }; @@ -208,13 +210,7 @@ 492D80CB138B231B0042D918 /* QQPhysical.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QQPhysical.h; path = src/game/QQPhysical.h; sourceTree = SOURCE_ROOT; }; 492D80DE138BA4910042D918 /* QQCooldown.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQCooldown.h; sourceTree = ""; }; 492D80DF138BA4910042D918 /* QQCooldown.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQCooldown.mm; sourceTree = ""; }; - 492D80E9138BA4B40042D918 /* QQTank.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQTank.h; sourceTree = ""; }; - 492D80EA138BA4B40042D918 /* QQTank.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQTank.mm; sourceTree = ""; }; - 492D80EE138BA4BC0042D918 /* QQBullet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQBullet.h; sourceTree = ""; }; - 492D80EF138BA4BC0042D918 /* QQBullet.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQBullet.mm; sourceTree = ""; }; 492D80F2138BA4CE0042D918 /* QQThing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQThing.h; sourceTree = ""; }; - 492D80FC138BCA840042D918 /* QQUnit.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQUnit.mm; sourceTree = ""; }; - 492D80FE138BCC9F0042D918 /* QQActorDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQActorDelegate.h; sourceTree = ""; }; 492D8101138C07540042D918 /* BEParallaxSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BEParallaxSprite.h; sourceTree = ""; }; 492D8102138C07540042D918 /* BEParallaxSprite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BEParallaxSprite.m; sourceTree = ""; }; 492D8103138C07540042D918 /* SHCircle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SHCircle.h; sourceTree = ""; }; @@ -227,16 +223,11 @@ 492D810A138C07540042D918 /* SXFPSMeter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SXFPSMeter.h; sourceTree = ""; }; 492D810B138C07540042D918 /* SXFPSMeter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SXFPSMeter.m; sourceTree = ""; }; 494DE9961376927C00FDB3D7 /* libBox2D.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libBox2D.a; sourceTree = SOURCE_ROOT; }; - 4978AD0D1395E5CE00930447 /* QQActors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQActors.h; sourceTree = ""; }; 4978AD131396139100930447 /* Tanks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tanks.h; sourceTree = ""; }; 4978AD161396302300930447 /* QQContactNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQContactNotification.h; sourceTree = ""; }; 4978AD171396302300930447 /* QQContactNotification.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQContactNotification.mm; sourceTree = ""; }; 4978AD181396302300930447 /* QQPhysicalEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQPhysicalEvents.h; sourceTree = ""; }; 4978AD191396302300930447 /* QQPhysicalEvents.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQPhysicalEvents.mm; sourceTree = ""; }; - 4978AD1F1396302F00930447 /* QQNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotification.h; sourceTree = ""; }; - 4978AD201396302F00930447 /* QQNotification.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQNotification.mm; sourceTree = ""; }; - 4978AD211396302F00930447 /* QQNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotifier.h; sourceTree = ""; }; - 4978AD241396302F00930447 /* QQObservable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQObservable.h; sourceTree = ""; }; 4995ABCA1381C46B00334646 /* Icon-iPad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-iPad.png"; sourceTree = ""; }; 4995ABCB1381C46B00334646 /* Icon-iPhone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-iPhone.png"; sourceTree = ""; }; 4995ABCC1381C46B00334646 /* Icon-iPhone@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-iPhone@2x.png"; sourceTree = ""; }; @@ -272,10 +263,26 @@ 49966914136930E8006E8125 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; 49966915136930E8006E8125 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 49966916136930E8006E8125 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 499D6A981399BFB8008E4C0D /* QQNotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotificationCenter.h; sourceTree = ""; }; - 499D6A991399BFB8008E4C0D /* QQNotificationCenter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQNotificationCenter.mm; sourceTree = ""; }; - 499D6A9A1399BFB8008E4C0D /* QQNotificationProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotificationProxy.h; sourceTree = ""; }; - 499D6A9B1399BFB8008E4C0D /* QQNotificationProxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQNotificationProxy.mm; sourceTree = ""; }; + 499F65C0139CBC0C00309DE4 /* QQNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotification.h; sourceTree = ""; }; + 499F65C1139CBC0C00309DE4 /* QQNotification.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQNotification.mm; sourceTree = ""; }; + 499F65C2139CBC0C00309DE4 /* QQNotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotificationCenter.h; sourceTree = ""; }; + 499F65C3139CBC0C00309DE4 /* QQNotificationCenter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQNotificationCenter.mm; sourceTree = ""; }; + 499F65C4139CBC0C00309DE4 /* QQNotificationProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotificationProxy.h; sourceTree = ""; }; + 499F65C5139CBC0C00309DE4 /* QQNotificationProxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQNotificationProxy.mm; sourceTree = ""; }; + 499F65C6139CBC0C00309DE4 /* QQNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotifier.h; sourceTree = ""; }; + 499F65C7139CBC0C00309DE4 /* QQNotifiers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQNotifiers.h; sourceTree = ""; }; + 499F65C8139CBC0C00309DE4 /* QQObservable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQObservable.h; sourceTree = ""; }; + 499F65D7139CBCBA00309DE4 /* QQActor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQActor.h; sourceTree = ""; }; + 499F65D8139CBCBA00309DE4 /* QQActor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQActor.mm; sourceTree = ""; }; + 499F65D9139CBCBA00309DE4 /* QQActorDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQActorDelegate.h; sourceTree = ""; }; + 499F65DA139CBCBA00309DE4 /* QQActors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQActors.h; sourceTree = ""; }; + 499F65DB139CBCBA00309DE4 /* QQBullet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQBullet.h; sourceTree = ""; }; + 499F65DC139CBCBA00309DE4 /* QQBullet.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQBullet.mm; sourceTree = ""; }; + 499F65DD139CBCBA00309DE4 /* QQTank.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQTank.h; sourceTree = ""; }; + 499F65DE139CBCBA00309DE4 /* QQTank.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQTank.mm; sourceTree = ""; }; + 499F65DF139CBCBA00309DE4 /* QQUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQUnit.h; sourceTree = ""; }; + 499F65E0139CBCBA00309DE4 /* QQUnit.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQUnit.mm; sourceTree = ""; }; + 499F65EB139CBCC000309DE4 /* QQGameTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQGameTime.h; sourceTree = ""; }; 49D8645B1392DB2800BC341C /* QQShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQShape.h; sourceTree = ""; }; 49D8645C1392DB2800BC341C /* QQShape.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQShape.mm; sourceTree = ""; }; 49DA67D2137847A7004841E9 /* QQWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQWorld.h; sourceTree = ""; }; @@ -284,9 +291,6 @@ 49E3C5D1139A73E700A3958A /* NSSet+QQExtensions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSSet+QQExtensions.mm"; sourceTree = ""; }; 49E67E10139B341600DDFC07 /* TanksMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TanksMacros.h; sourceTree = ""; }; 49E8349E13812427007A6598 /* QQActive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQActive.h; sourceTree = ""; }; - 49E834A013812427007A6598 /* QQActor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQActor.h; sourceTree = ""; }; - 49E834A113812427007A6598 /* QQActor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQActor.mm; sourceTree = ""; }; - 49E834A213812427007A6598 /* QQUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQUnit.h; sourceTree = ""; }; 49E834A413812427007A6598 /* QQDisplayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQDisplayable.h; sourceTree = ""; }; 49E834A513812427007A6598 /* QQGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QQGame.h; sourceTree = ""; }; 49E834A613812427007A6598 /* QQGame.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = QQGame.mm; sourceTree = ""; }; @@ -447,24 +451,6 @@ path = ability; sourceTree = ""; }; - 492D80E8138BA4B40042D918 /* unit */ = { - isa = PBXGroup; - children = ( - 492D80E9138BA4B40042D918 /* QQTank.h */, - 492D80EA138BA4B40042D918 /* QQTank.mm */, - ); - path = unit; - sourceTree = ""; - }; - 492D80ED138BA4BC0042D918 /* bullet */ = { - isa = PBXGroup; - children = ( - 492D80EE138BA4BC0042D918 /* QQBullet.h */, - 492D80EF138BA4BC0042D918 /* QQBullet.mm */, - ); - path = bullet; - sourceTree = ""; - }; 492D8100138C07540042D918 /* Extras */ = { isa = PBXGroup; children = ( @@ -497,16 +483,9 @@ 4978AD1E1396302E00930447 /* qq */ = { isa = PBXGroup; children = ( + 499F65BF139CBC0C00309DE4 /* event */, 49E3C5D0139A73E700A3958A /* NSSet+QQExtensions.h */, 49E3C5D1139A73E700A3958A /* NSSet+QQExtensions.mm */, - 499D6A981399BFB8008E4C0D /* QQNotificationCenter.h */, - 499D6A991399BFB8008E4C0D /* QQNotificationCenter.mm */, - 499D6A9A1399BFB8008E4C0D /* QQNotificationProxy.h */, - 499D6A9B1399BFB8008E4C0D /* QQNotificationProxy.mm */, - 4978AD1F1396302F00930447 /* QQNotification.h */, - 4978AD201396302F00930447 /* QQNotification.mm */, - 4978AD211396302F00930447 /* QQNotifier.h */, - 4978AD241396302F00930447 /* QQObservable.h */, ); path = qq; sourceTree = ""; @@ -621,37 +600,56 @@ name = Frameworks; sourceTree = ""; }; + 499F65BF139CBC0C00309DE4 /* event */ = { + isa = PBXGroup; + children = ( + 499F65C0139CBC0C00309DE4 /* QQNotification.h */, + 499F65C1139CBC0C00309DE4 /* QQNotification.mm */, + 499F65C2139CBC0C00309DE4 /* QQNotificationCenter.h */, + 499F65C3139CBC0C00309DE4 /* QQNotificationCenter.mm */, + 499F65C4139CBC0C00309DE4 /* QQNotificationProxy.h */, + 499F65C5139CBC0C00309DE4 /* QQNotificationProxy.mm */, + 499F65C6139CBC0C00309DE4 /* QQNotifier.h */, + 499F65C7139CBC0C00309DE4 /* QQNotifiers.h */, + 499F65C8139CBC0C00309DE4 /* QQObservable.h */, + ); + path = event; + sourceTree = ""; + }; + 499F65D6139CBCBA00309DE4 /* unit */ = { + isa = PBXGroup; + children = ( + 499F65D7139CBCBA00309DE4 /* QQActor.h */, + 499F65D8139CBCBA00309DE4 /* QQActor.mm */, + 499F65D9139CBCBA00309DE4 /* QQActorDelegate.h */, + 499F65DA139CBCBA00309DE4 /* QQActors.h */, + 499F65DB139CBCBA00309DE4 /* QQBullet.h */, + 499F65DC139CBCBA00309DE4 /* QQBullet.mm */, + 499F65DD139CBCBA00309DE4 /* QQTank.h */, + 499F65DE139CBCBA00309DE4 /* QQTank.mm */, + 499F65DF139CBCBA00309DE4 /* QQUnit.h */, + 499F65E0139CBCBA00309DE4 /* QQUnit.mm */, + ); + path = unit; + sourceTree = ""; + }; 49E8349D13812427007A6598 /* game */ = { isa = PBXGroup; children = ( + 499F65D6139CBCBA00309DE4 /* unit */, 49193BEE139280180005B3DD /* map */, 492D80DB138BA4910042D918 /* ability */, - 49E8349F13812427007A6598 /* actor */, 492D80F2138BA4CE0042D918 /* QQThing.h */, 49E8349E13812427007A6598 /* QQActive.h */, 49E834A413812427007A6598 /* QQDisplayable.h */, 492D80CB138B231B0042D918 /* QQPhysical.h */, + 499F65EB139CBCC000309DE4 /* QQGameTime.h */, 49E834A513812427007A6598 /* QQGame.h */, 49E834A613812427007A6598 /* QQGame.mm */, ); path = game; sourceTree = ""; }; - 49E8349F13812427007A6598 /* actor */ = { - isa = PBXGroup; - children = ( - 492D80ED138BA4BC0042D918 /* bullet */, - 492D80E8138BA4B40042D918 /* unit */, - 4978AD0D1395E5CE00930447 /* QQActors.h */, - 492D80FE138BCC9F0042D918 /* QQActorDelegate.h */, - 49E834A013812427007A6598 /* QQActor.h */, - 49E834A113812427007A6598 /* QQActor.mm */, - 49E834A213812427007A6598 /* QQUnit.h */, - 492D80FC138BCA840042D918 /* QQUnit.mm */, - ); - path = actor; - sourceTree = ""; - }; 49E834AF13812555007A6598 /* ui */ = { isa = PBXGroup; children = ( @@ -707,15 +705,15 @@ 49F2D9AE13764666000B6B8C /* src */ = { isa = PBXGroup; children = ( - 4978AD1E1396302E00930447 /* qq */, 49F2D9B313764666000B6B8C /* render */, 49E834AF13812555007A6598 /* ui */, + 4978AD1E1396302E00930447 /* qq */, 49F2D9B113764666000B6B8C /* physics */, 49E8349D13812427007A6598 /* game */, 49F2D9B013764666000B6B8C /* main.mm */, 49F2D9B213764666000B6B8C /* prefix.pch */, - 4978AD131396139100930447 /* Tanks.h */, 49E67E10139B341600DDFC07 /* TanksMacros.h */, + 4978AD131396139100930447 /* Tanks.h */, ); path = src; sourceTree = ""; @@ -1051,10 +1049,8 @@ 49DA67D4137847A7004841E9 /* QQWorld.h in Headers */, 4B8B2A50137D098500CA4076 /* QQAnimationContainer.h in Headers */, 49E834A713812427007A6598 /* QQActive.h in Headers */, - 49E834A813812427007A6598 /* QQActor.h in Headers */, 49E834AC13812427007A6598 /* QQDisplayable.h in Headers */, 4995ABB213816CCE00334646 /* QQGame.h in Headers */, - 4995ABB313816CD400334646 /* QQUnit.h in Headers */, 49E834BE13812555007A6598 /* QQAppDelegate.h in Headers */, 49E834C013812555007A6598 /* QQAppDelegate_iPad.h in Headers */, 49E834C313812555007A6598 /* QQAppDelegate_iPhone.h in Headers */, @@ -1063,23 +1059,27 @@ 49E834D3138166A6007A6598 /* QQSparrowExtensions.h in Headers */, 492D80CC138B231B0042D918 /* QQPhysical.h in Headers */, 492D80E4138BA4910042D918 /* QQCooldown.h in Headers */, - 492D80EB138BA4B40042D918 /* QQTank.h in Headers */, - 492D80F0138BA4BC0042D918 /* QQBullet.h in Headers */, 492D80F3138BA4CE0042D918 /* QQThing.h in Headers */, - 492D80FF138BCC9F0042D918 /* QQActorDelegate.h in Headers */, 49193BF5139280180005B3DD /* QQLevel.h in Headers */, 49D8645D1392DB2800BC341C /* QQShape.h in Headers */, - 4978AD0E1395E5CE00930447 /* QQActors.h in Headers */, 4978AD141396139100930447 /* Tanks.h in Headers */, 4978AD1A1396302300930447 /* QQContactNotification.h in Headers */, 4978AD1C1396302300930447 /* QQPhysicalEvents.h in Headers */, - 4978AD251396302F00930447 /* QQNotification.h in Headers */, - 4978AD271396302F00930447 /* QQNotifier.h in Headers */, - 4978AD2A1396302F00930447 /* QQObservable.h in Headers */, - 499D6A9C1399BFB8008E4C0D /* QQNotificationCenter.h in Headers */, - 499D6A9E1399BFB8008E4C0D /* QQNotificationProxy.h in Headers */, 49E3C5D2139A73E700A3958A /* NSSet+QQExtensions.h in Headers */, 49E67E11139B341600DDFC07 /* TanksMacros.h in Headers */, + 499F65C9139CBC0C00309DE4 /* QQNotification.h in Headers */, + 499F65CB139CBC0C00309DE4 /* QQNotificationCenter.h in Headers */, + 499F65CD139CBC0C00309DE4 /* QQNotificationProxy.h in Headers */, + 499F65CF139CBC0C00309DE4 /* QQNotifier.h in Headers */, + 499F65D0139CBC0C00309DE4 /* QQNotifiers.h in Headers */, + 499F65D1139CBC0C00309DE4 /* QQObservable.h in Headers */, + 499F65E1139CBCBA00309DE4 /* QQActor.h in Headers */, + 499F65E3139CBCBA00309DE4 /* QQActorDelegate.h in Headers */, + 499F65E4139CBCBA00309DE4 /* QQActors.h in Headers */, + 499F65E5139CBCBA00309DE4 /* QQBullet.h in Headers */, + 499F65E7139CBCBA00309DE4 /* QQTank.h in Headers */, + 499F65E9139CBCBA00309DE4 /* QQUnit.h in Headers */, + 499F65EC139CBCC000309DE4 /* QQGameTime.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1220,7 +1220,6 @@ 4B91A15A138F644000EF4D7C /* QQPhysicsDebugView.mm in Sources */, 49DA67D5137847A7004841E9 /* QQWorld.mm in Sources */, 4B8B2A51137D098500CA4076 /* QQAnimationContainer.mm in Sources */, - 49E834A913812427007A6598 /* QQActor.mm in Sources */, 49E834AE13812427007A6598 /* QQGame.mm in Sources */, 49E834BF13812555007A6598 /* QQAppDelegate.mm in Sources */, 49E834C113812555007A6598 /* QQAppDelegate_iPad.mm in Sources */, @@ -1228,18 +1227,19 @@ 49E834C713812555007A6598 /* QQViewport.mm in Sources */, 49E834D4138166A6007A6598 /* QQSparrowExtensions.mm in Sources */, 492D80E5138BA4910042D918 /* QQCooldown.mm in Sources */, - 492D80EC138BA4B40042D918 /* QQTank.mm in Sources */, - 492D80F1138BA4BC0042D918 /* QQBullet.mm in Sources */, - 492D80FD138BCA840042D918 /* QQUnit.mm in Sources */, 49193BF6139280180005B3DD /* QQLevel.mm in Sources */, 49F2D9C413764666000B6B8C /* main.mm in Sources */, 49D8645E1392DB2800BC341C /* QQShape.mm in Sources */, 4978AD1B1396302300930447 /* QQContactNotification.mm in Sources */, 4978AD1D1396302300930447 /* QQPhysicalEvents.mm in Sources */, - 4978AD261396302F00930447 /* QQNotification.mm in Sources */, - 499D6A9D1399BFB8008E4C0D /* QQNotificationCenter.mm in Sources */, - 499D6A9F1399BFB8008E4C0D /* QQNotificationProxy.mm in Sources */, 49E3C5D3139A73E700A3958A /* NSSet+QQExtensions.mm in Sources */, + 499F65CA139CBC0C00309DE4 /* QQNotification.mm in Sources */, + 499F65CC139CBC0C00309DE4 /* QQNotificationCenter.mm in Sources */, + 499F65CE139CBC0C00309DE4 /* QQNotificationProxy.mm in Sources */, + 499F65E2139CBCBA00309DE4 /* QQActor.mm in Sources */, + 499F65E6139CBCBA00309DE4 /* QQBullet.mm in Sources */, + 499F65E8139CBCBA00309DE4 /* QQTank.mm in Sources */, + 499F65EA139CBCBA00309DE4 /* QQUnit.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };