--- /dev/null
+#import "Sparrow.h"
+
+
+@protocol Displayable
+
+@property (nonatomic, retain, readonly) SPDisplayObject* shape;
+
+@end
\ No newline at end of file
--- /dev/null
+#import "Sparrow.h"
+
+#import "game/actor/Unit.h"
+#import "physics/World.h"
+
+
+@interface Game : SPStage {
+@private
+ Unit* _unit;
+ World* _world;
+}
+
+@property (nonatomic, retain) World* world;
+
+- (void) onEnterFrame:(SPEnterFrameEvent*)event;
+
++ (Game*) current;
+
+@end
--- /dev/null
+#import "Game.h"
+#import "game/actor/Unit.h"
+
+
+
+static Game* _currentGame = NULL;
+
+
+
+@interface Game ()
+@property (nonatomic, retain) Unit* unit;
+@end
+
+
+@implementation Game
+@synthesize world = _world;
+@synthesize unit = _unit;
+
+
+- (id) init {
+ if (_currentGame) {
+ [self release];
+ [NSException raise:@"TooManyGames" format:@"cannot instantiate more than one Game at a time!"];
+ }
+
+ if ( (self = [super init]) ){
+ _currentGame = self;
+
+ _world = [[World alloc] init];
+ [self addEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME];
+
+ _unit = [[Unit alloc] init];
+ // [self addEventListener:@selector(onTouch:) atObject:_unit forType:SP_EVENT_TYPE_TOUCH];
+ // if (_unit.shape) [self addChild:_unit.shape];
+ }
+ return self;
+}
+
+- (void) dealloc {
+ // [self setUnit:nil];
+ // [self setWorld:nil];
+ [_unit release];
+ [_world release];
+ _currentGame = NULL;
+ [super dealloc];
+}
+
+- (void) onEnterFrame:(SPEnterFrameEvent*)event {
+ NSLog(@"Time passed since last frame: %f", event.passedTime);
+ // [world step];
+}
+
++ (Game*) current {
+ if (!_currentGame)
+ [[[Game 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
-#import "tanks/Active.h"
-#import "tanks/Displayable.h"
-
+#import "game/Active.h"
+#import "game/Displayable.h"
#import "physics/World.h"
+@class Game;
+
@interface Actor : NSObject <Active, Displayable> {
@private
- BOOL _active;
- World* _world;
+ BOOL _active;
}
+@property (nonatomic, readonly) Game* game;
@property (nonatomic, readonly) World* world;
-- (id) init:(World*)theWorld;
@end
--- /dev/null
+#import "Actor.h"
+#import "game/Game.h"
+
+
+@implementation Actor
+
+@synthesize active;
+
+- (Game*) game { return Game.current; }
+- (World*) world { return self.game.world; }
+
+- (SPDisplayObject*) shape { return nil; }
+
+- (void) act {
+ // stub
+}
+
+@end
--- /dev/null
+#import "Sparrow.h"
+#import "render/QQSparrowExtensions.h"
+
+#import "game/actor/Actor.h"
+#import "physics/World.h"
+
+
+@interface Unit : Actor {
+
+@private
+ SPDisplayObject* _shape;
+}
+
+@property (nonatomic, retain, readwrite) SPDisplayObject* shape;
+
+- (id) initWithFile:(NSString*)fileName atX:(float)x y:(float)y;
+- (id) initWithShape:(SPDisplayObject*)aShape;
+
+- (void) onTouch:(SPTouchEvent*)event;
+
+@end
--- /dev/null
+#import "Sparrow.h"
+#import "Unit.h"
+
+
+@implementation Unit
+
+@synthesize shape = _shape;
+
+- (id) init {
+ return [self initWithShape:[[SPQuad quadWithWidth:32 height:32 color:0xff0000] setPositionX:50 y:50]];
+}
+
+- (id) initWithFile:(NSString*)fileName atX:(float)x y:(float)y {
+ return [self initWithShape:[[[[SPImage alloc] initWithContentsOfFile:fileName] autorelease] setPositionX:x y:y]];
+}
+
+- (id) initWithShape:(SPDisplayObject*)aShape {
+ if ((self = [super init])) {
+ self.shape = aShape;
+ [self.game addEventListener:@selector(onTouch:) atObject:self forType:SP_EVENT_TYPE_TOUCH];
+ }
+ return self;
+}
+
+- (void) dealloc {
+ [self.game removeEventListener:@selector(onTouch:) atObject:self forType:SP_EVENT_TYPE_TOUCH];
+ [self.game removeChild:_shape];
+ [_shape release];
+ [super dealloc];
+}
+
+- (void) setShape:(SPDisplayObject*)newShape {
+ if (_shape != newShape) {
+ [self.game removeChild:_shape];
+ [_shape release];
+ _shape = [newShape retain];
+ [self.game addChild:_shape];
+ }
+}
+
+- (void) onTouch:(SPTouchEvent*)event {
+ NSLog(@"%@ onTouch! shape=%@ parent=%@", self, self.shape, self.shape.parent);
+ SPTouch* touch = [[event touchesWithTarget:self.shape.parent] anyObject];
+ if (touch) {
+ SPPoint* touchPosition = [touch locationInSpace:self.shape.parent];
+ self.shape.x = touchPosition.x - self.shape.width / 2.0f;
+ self.shape.y = touchPosition.y - self.shape.height / 2.0f;
+ }
+}
+
+
+@end
-//
-// main.m
-// tanks
-//
-// Created by dsc on 4/27/11.
-// Copyright 2011 lttlst.com. All rights reserved.
-//
-
#import <UIKit/UIKit.h>
+
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
#include <Box2D/Box2D.h>
-#import "ui/GLES-Render.h"
+#import "physics/debug/GLESDebugDraw.h"
@interface World : NSObject {
* 3. This notice may not be removed or altered from any source distribution.
*/
-#ifndef RENDER_H
-#define RENDER_H
+#ifndef GLES_DEBUG_DRAW_H
+#define GLES_DEBUG_DRAW_H
#import <UIKit/UIKit.h>
#import <OpenGLES/EAGL.h>
* 3. This notice may not be removed or altered from any source distribution.
*/
-#include "GLES-Render.h"
+#include "GLESDebugDraw.h"
#include <cstdio>
--- /dev/null
+#import "SPDisplayObject.h"
+
+
+@interface SPDisplayObject (QQSparrowExtensions)
+
+- (id) setPositionX:(float)x y:(float)y;
+
+@end
+
--- /dev/null
+#import "QQSparrowExtensions.h"
+
+
+@implementation SPDisplayObject (QQSparrowExtensions)
+
+- (id) setPositionX:(float)x y:(float)y {
+ self.x = x;
+ self.y = y;
+ return self;
+}
+
+@end
\ No newline at end of file
-//
-// AnimationContainer.h
-// tanks
-//
-// Created by Doris Chen on 5/12/11.
-// Copyright 2011 __MyCompanyName__. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
#import "SPTextureAtlas.h"
////////////////////////////////////////////////////////////////////////////////////
+++ /dev/null
-#import "Sparrow.h"
-
-
-@protocol Displayable
-
-@property (nonatomic, readonly) SPDisplayObject* shape;
-
-@end
\ No newline at end of file
+++ /dev/null
-#import "Sparrow.h"
-
-#import "physics/World.h"
-
-
-@interface Game : SPStage
-
-@property (nonatomic, retain) World* world;
-
-- (void) onEnterFrame:(SPEnterFrameEvent*)event;
-
-@end
+++ /dev/null
-#import "Game.h"
-#import "tanks/unit/Unit.h"
-
-
-@interface Game ()
-
-@property (nonatomic, retain) Unit* unit;
-
-@end
-
-
-@implementation Game
-
-@synthesize unit;
-@synthesize world;
-
-
-- (id) init {
- if ( (self = [super init]) ){
- world = [[[World alloc] init] autorelease];
- [self addEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME];
-
- unit = [[[Unit alloc] init:world] autorelease];
- [self addEventListener:@selector(onTouch:) atObject:unit forType:SP_EVENT_TYPE_TOUCH];
- [self addChild:unit.quad];
- }
- return self;
-}
-
-- (void) dealloc {
- [self setUnit:nil];
- [self setWorld:nil];
- [super dealloc];
-}
-
-- (void) onEnterFrame:(SPEnterFrameEvent*)event {
- NSLog(@"Time passed since last frame: %f", event.passedTime);
- // [world step];
-}
-
-
-
-
-@end
\ No newline at end of file
+++ /dev/null
-#import "Actor.h"
-
-
-@implementation Actor
-
-@synthesize active;
-@synthesize world = _world;
-
-
-- (id) init:(World*)theWorld {
- if ((self = [super init])) {
- _world = theWorld; // weakref: does not inc refcount
- }
- return self;
-}
-
-- (SPDisplayObject*) shape {
- return nil;
-}
-
-
-- (void) act {}
-
-@end
+++ /dev/null
-#import "Sparrow.h"
-#import "tanks/unit/Actor.h"
-#import "physics/World.h"
-
-
-@interface Unit : Actor {
-}
-
-@property (nonatomic, retain) SPQuad* quad;
-
-- (Unit*) initWithWidth:(float)width height:(float)height X:(float)x Y:(float)y color:(int)color;
-- (Unit*) initWithFile:(NSString*)fileName atX:(float)x andY:(float)y;
-
-- (void) onTouch:(SPTouchEvent*)event;
-
-@end
+++ /dev/null
-#import "Unit.h"
-#import "Sparrow.h"
-
-
-@implementation Unit
-
-@synthesize quad;
-
-- (SPDisplayObject*) shape { return quad; }
-
-
-
-- (Unit*) init:(World*)theWorld {
- if ((self = [super init:theWorld])) {
- quad = [SPQuad quadWithWidth:32 height:32];
- quad.color = 0xff0000;
- quad.x = 0;
- quad.y = 0;
- }
- return self;
-}
-
-- (void) onTouch:(SPTouchEvent*)event {
- SPTouch* touch = [[event touchesWithTarget:quad.parent] anyObject];
- if (touch) {
- SPPoint* touchPosition = [touch locationInSpace:quad.parent];
- quad.x = touchPosition.x - quad.width / 2.0f;
- quad.y = touchPosition.y - quad.height / 2.0f;
- }
-}
-
-
-@end
#import "Sparrow.h"
-#import "Game.h"
+#import "game/Game.h"
-@interface RootAppDelegate : NSObject <UIApplicationDelegate>
+@interface AppDelegate : NSObject <UIApplicationDelegate>
{
UIWindow* window;
SPView* sparrowView;
- Game* game;
+ Game* _game;
}
@property (nonatomic, retain) IBOutlet UIWindow* window;
//
-// RootAppDelegate.m
+// AppDelegate.m
// tanks
//
// Created by dsc on 4/27/11.
// Copyright 2011 lttlst.com. All rights reserved.
//
-#import "RootAppDelegate.h"
-#import "Game.h"
+#import "AppDelegate.h"
+#import "game/Game.h"
-@implementation RootAppDelegate
+@implementation AppDelegate
@synthesize window;
@synthesize sparrowView;
-@synthesize game;
+@synthesize game = _game;
- (void) applicationDidFinishLaunching:(UIApplication*)application {
[SPAudioEngine start];
if ( sparrowView.frameRate != 60.0f )
sparrowView.frameRate = 60.0f;
+ // sparrowView.stage = [[[SPStage alloc] init] autorelease];
- game = [[[Game alloc] init] autorelease];
- sparrowView.stage = game;
+ _game = [[Game alloc] init];
+ sparrowView.stage = _game;
[window makeKeyAndVisible];
[sparrowView start];
}
- (void) dealloc {
- [self setGame:nil];
+ // [self setGame:nil];
+ [_game release];
[sparrowView release];
[window release];
[super dealloc];
-#include <Box2D/Box2D.h>
#import "Sparrow.h"
#import "physics/World.h"
#import <OpenGLES/EAGL.h>
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES1/glext.h>
+
#import "Sparrow.h"
#import "Viewport.h"
-#import "World.h"
+#import "physics/World.h"
+
@implementation Viewport
//
-// RootAppDelegate_iPad.h
+// AppDelegate_iPad.h
// tanks
//
// Created by dsc on 4/27/11.
//
#import <UIKit/UIKit.h>
-#import "RootAppDelegate.h"
+#import "ui/AppDelegate.h"
-@interface RootAppDelegate_iPad : RootAppDelegate {
+@interface AppDelegate_iPad : AppDelegate {
}
//
-// RootAppDelegate_iPad.m
+// AppDelegate_iPad.m
// tanks
//
// Created by dsc on 4/27/11.
// Copyright 2011 lttlst.com. All rights reserved.
//
-#import "RootAppDelegate_iPad.h"
+#import "AppDelegate_iPad.h"
-@implementation RootAppDelegate_iPad
+@implementation AppDelegate_iPad
- (void)dealloc
{
<reference key="source" ref="250404236"/>
<reference key="destination" ref="607297697"/>
</object>
- <int key="connectionID">14</int>
+ <int key="connectionID">15</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="2.IBEditorWindowLastContentRect">{{202, 84}, {783, 772}}</string>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="6.CustomClassName">RootAppDelegate_iPad</string>
+ <string key="6.CustomClassName">AppDelegate_iPad</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
- <int key="maxID">14</int>
+ <int key="maxID">15</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
- <string key="className">RootAppDelegate</string>
+ <string key="className">AppDelegate</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="sparrowView">SPView</string>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/RootAppDelegate.h</string>
+ <string key="minorKey">./Classes/AppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">RootAppDelegate_iPad</string>
- <string key="superclassName">RootAppDelegate</string>
+ <string key="className">AppDelegate_iPad</string>
+ <string key="superclassName">AppDelegate</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/RootAppDelegate_iPad.h</string>
+ <string key="minorKey">./Classes/AppDelegate_iPad.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
//
-// RootAppDelegate_iPhone.h
+// AppDelegate_iPhone.h
// tanks
//
// Created by dsc on 4/27/11.
//
#import <UIKit/UIKit.h>
-#import "RootAppDelegate.h"
+#import "ui/AppDelegate.h"
-@interface RootAppDelegate_iPhone : RootAppDelegate {
+@interface AppDelegate_iPhone : AppDelegate {
}
//
-// RootAppDelegate_iPhone.m
+// AppDelegate_iPhone.m
// tanks
//
// Created by dsc on 4/27/11.
// Copyright 2011 lttlst.com. All rights reserved.
//
-#import "RootAppDelegate_iPhone.h"
+#import "AppDelegate_iPhone.h"
-@implementation RootAppDelegate_iPhone
+@implementation AppDelegate_iPhone
- (void)dealloc
{
<string key="NSFrame">{{51, 229}, {218, 22}}</string>
<reference key="NSSuperview" ref="380026005"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<reference key="source" ref="987256611"/>
<reference key="destination" ref="851352140"/>
</object>
- <int key="connectionID">11</int>
+ <int key="connectionID">12</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<string key="2.IBEditorWindowLastContentRect">{{520, 376}, {320, 480}}</string>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<integer value="1" key="2.UIWindow.visibleAtLaunch"/>
- <string key="4.CustomClassName">RootAppDelegate_iPhone</string>
+ <string key="4.CustomClassName">AppDelegate_iPhone</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="9.CustomClassName">SPView</string>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
- <int key="maxID">11</int>
+ <int key="maxID">12</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
- <string key="className">RootAppDelegate</string>
+ <string key="className">AppDelegate</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="sparrowView">SPView</string>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/RootAppDelegate.h</string>
+ <string key="minorKey">./Classes/AppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">RootAppDelegate_iPhone</string>
- <string key="superclassName">RootAppDelegate</string>
+ <string key="className">AppDelegate_iPhone</string>
+ <string key="superclassName">AppDelegate</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/RootAppDelegate_iPhone.h</string>
+ <string key="minorKey">./Classes/AppDelegate_iPhone.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
/* Begin PBXBuildFile section */
494DE9971376927C00FDB3D7 /* libBox2D.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DE9961376927C00FDB3D7 /* libBox2D.a */; };
+ 4995ABB213816CCE00334646 /* Game.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A513812427007A6598 /* Game.h */; };
+ 4995ABB313816CD400334646 /* Unit.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A213812427007A6598 /* Unit.h */; };
499668C713692E2D006E8125 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 499668C613692E2D006E8125 /* UIKit.framework */; };
499668C913692E2D006E8125 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 499668C813692E2D006E8125 /* Foundation.framework */; };
499668CB13692E2D006E8125 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 499668CA13692E2D006E8125 /* CoreGraphics.framework */; };
4996691B136930E8006E8125 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49966916136930E8006E8125 /* QuartzCore.framework */; };
49DA67D4137847A7004841E9 /* World.h in Headers */ = {isa = PBXBuildFile; fileRef = 49DA67D2137847A7004841E9 /* World.h */; };
49DA67D5137847A7004841E9 /* World.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49DA67D3137847A7004841E9 /* World.mm */; };
- 49E834441380CB61007A6598 /* GLES-Render.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834421380CB61007A6598 /* GLES-Render.h */; };
- 49E834451380CB61007A6598 /* GLES-Render.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834431380CB61007A6598 /* GLES-Render.mm */; };
- 49E834501380E234007A6598 /* Displayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E8344F1380E234007A6598 /* Displayable.h */; };
- 49E834531380EBB2007A6598 /* Actor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834511380EBB2007A6598 /* Actor.h */; };
- 49E834541380EBB2007A6598 /* Actor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834521380EBB2007A6598 /* Actor.mm */; };
- 49E8345613810618007A6598 /* Active.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E8345513810618007A6598 /* Active.h */; };
+ 49E834A713812427007A6598 /* Active.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E8349E13812427007A6598 /* Active.h */; };
+ 49E834A813812427007A6598 /* Actor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A013812427007A6598 /* Actor.h */; };
+ 49E834A913812427007A6598 /* Actor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834A113812427007A6598 /* Actor.mm */; };
+ 49E834AB13812427007A6598 /* Unit.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834A313812427007A6598 /* Unit.mm */; };
+ 49E834AC13812427007A6598 /* Displayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834A413812427007A6598 /* Displayable.h */; };
+ 49E834AE13812427007A6598 /* Game.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834A613812427007A6598 /* Game.mm */; };
+ 49E834BE13812555007A6598 /* AppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834B013812555007A6598 /* AppDelegate.h */; };
+ 49E834BF13812555007A6598 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834B113812555007A6598 /* AppDelegate.mm */; };
+ 49E834C013812555007A6598 /* AppDelegate_iPad.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834B313812555007A6598 /* AppDelegate_iPad.h */; };
+ 49E834C113812555007A6598 /* AppDelegate_iPad.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834B413812555007A6598 /* AppDelegate_iPad.mm */; };
+ 49E834C213812555007A6598 /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 49E834B513812555007A6598 /* MainWindow_iPad.xib */; };
+ 49E834C313812555007A6598 /* AppDelegate_iPhone.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834B813812555007A6598 /* AppDelegate_iPhone.h */; };
+ 49E834C413812555007A6598 /* AppDelegate_iPhone.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834B913812555007A6598 /* AppDelegate_iPhone.mm */; };
+ 49E834C513812555007A6598 /* MainWindow_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 49E834BA13812555007A6598 /* MainWindow_iPhone.xib */; };
+ 49E834C613812555007A6598 /* Viewport.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834BC13812555007A6598 /* Viewport.h */; };
+ 49E834C713812555007A6598 /* Viewport.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834BD13812555007A6598 /* Viewport.mm */; };
+ 49E834CD13814F7D007A6598 /* GLESDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834C913814F7D007A6598 /* GLESDebugDraw.h */; };
+ 49E834CE13814F7D007A6598 /* GLESDebugDraw.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834CA13814F7D007A6598 /* GLESDebugDraw.mm */; };
+ 49E834D3138166A6007A6598 /* QQSparrowExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E834D1138166A6007A6598 /* QQSparrowExtensions.h */; };
+ 49E834D4138166A6007A6598 /* QQSparrowExtensions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49E834D2138166A6007A6598 /* QQSparrowExtensions.mm */; };
49F2D9C413764666000B6B8C /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49F2D9B013764666000B6B8C /* main.mm */; };
- 49F2D9C513764666000B6B8C /* RootAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49F2D9B513764666000B6B8C /* RootAppDelegate.mm */; };
- 49F2D9C613764666000B6B8C /* Game.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49F2D9B813764666000B6B8C /* Game.mm */; };
- 49F2D9C713764666000B6B8C /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 49F2D9BB13764666000B6B8C /* MainWindow_iPad.xib */; };
- 49F2D9C813764666000B6B8C /* RootAppDelegate_iPad.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49F2D9BE13764666000B6B8C /* RootAppDelegate_iPad.mm */; };
- 49F2D9C913764666000B6B8C /* MainWindow_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 49F2D9C013764666000B6B8C /* MainWindow_iPhone.xib */; };
- 49F2D9CA13764666000B6B8C /* RootAppDelegate_iPhone.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49F2D9C313764666000B6B8C /* RootAppDelegate_iPhone.mm */; };
- 49F2D9CD13764710000B6B8C /* RootAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2D9B413764666000B6B8C /* RootAppDelegate.h */; };
- 49F2D9CE13764710000B6B8C /* Game.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2D9B713764666000B6B8C /* Game.h */; };
- 49F2D9CF13764710000B6B8C /* RootAppDelegate_iPad.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2D9BD13764666000B6B8C /* RootAppDelegate_iPad.h */; };
- 49F2D9D013764710000B6B8C /* RootAppDelegate_iPhone.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2D9C213764666000B6B8C /* RootAppDelegate_iPhone.h */; };
49F2D9D713764A9B000B6B8C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 49F2D9D413764A9B000B6B8C /* InfoPlist.strings */; };
49F2DA8213764ED6000B6B8C /* SPAVSound.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2DA2613764ED5000B6B8C /* SPAVSound.h */; };
49F2DA8313764ED6000B6B8C /* SPAVSound.m in Sources */ = {isa = PBXBuildFile; fileRef = 49F2DA2713764ED5000B6B8C /* SPAVSound.m */; };
49F2DADD13764ED6000B6B8C /* SPUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2DA8013764ED6000B6B8C /* SPUtils.h */; };
49F2DADE13764ED6000B6B8C /* SPUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 49F2DA8113764ED6000B6B8C /* SPUtils.m */; };
49F2DADF13764ED6000B6B8C /* Sparrow.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2DA1D13764ED5000B6B8C /* Sparrow.h */; };
- 49F2DB341376632E000B6B8C /* Unit.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F2DB321376632E000B6B8C /* Unit.h */; };
- 49F2DB351376632E000B6B8C /* Unit.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49F2DB331376632E000B6B8C /* Unit.mm */; };
4B8B2A3213784D2D00CA4076 /* tank-pink.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8B2A3113784D2D00CA4076 /* tank-pink.png */; };
4B8B2A50137D098500CA4076 /* AnimationContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B8B2A4E137D098500CA4076 /* AnimationContainer.h */; };
- 4B8B2A51137D098500CA4076 /* AnimationContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8B2A4F137D098500CA4076 /* AnimationContainer.m */; };
+ 4B8B2A51137D098500CA4076 /* AnimationContainer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8B2A4F137D098500CA4076 /* AnimationContainer.mm */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
/* Begin PBXFileReference section */
494DE9961376927C00FDB3D7 /* libBox2D.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libBox2D.a; sourceTree = SOURCE_ROOT; };
- 496D95E91379865A00C1D33E /* PhysicsDebugView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhysicsDebugView.h; sourceTree = "<group>"; };
- 496D95EA1379865A00C1D33E /* PhysicsDebugView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PhysicsDebugView.mm; sourceTree = "<group>"; };
- 496D95F7137A358100C1D33E /* Viewport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Viewport.h; sourceTree = "<group>"; };
- 496D95F8137A358100C1D33E /* Viewport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Viewport.mm; sourceTree = "<group>"; };
499668C213692E2D006E8125 /* Tanks.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Tanks.app; sourceTree = BUILT_PRODUCTS_DIR; };
499668C613692E2D006E8125 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
499668C813692E2D006E8125 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
49966916136930E8006E8125 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
49DA67D2137847A7004841E9 /* World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = World.h; sourceTree = "<group>"; };
49DA67D3137847A7004841E9 /* World.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = World.mm; sourceTree = "<group>"; };
- 49E834421380CB61007A6598 /* GLES-Render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GLES-Render.h"; sourceTree = "<group>"; };
- 49E834431380CB61007A6598 /* GLES-Render.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "GLES-Render.mm"; sourceTree = "<group>"; };
- 49E8344F1380E234007A6598 /* Displayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Displayable.h; sourceTree = "<group>"; };
- 49E834511380EBB2007A6598 /* Actor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Actor.h; sourceTree = "<group>"; };
- 49E834521380EBB2007A6598 /* Actor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Actor.mm; sourceTree = "<group>"; };
- 49E8345513810618007A6598 /* Active.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Active.h; sourceTree = "<group>"; };
+ 49E8349E13812427007A6598 /* Active.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Active.h; sourceTree = "<group>"; };
+ 49E834A013812427007A6598 /* Actor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Actor.h; sourceTree = "<group>"; };
+ 49E834A113812427007A6598 /* Actor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Actor.mm; sourceTree = "<group>"; };
+ 49E834A213812427007A6598 /* Unit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Unit.h; sourceTree = "<group>"; };
+ 49E834A313812427007A6598 /* Unit.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Unit.mm; sourceTree = "<group>"; };
+ 49E834A413812427007A6598 /* Displayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Displayable.h; sourceTree = "<group>"; };
+ 49E834A513812427007A6598 /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = "<group>"; };
+ 49E834A613812427007A6598 /* Game.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Game.mm; sourceTree = "<group>"; };
+ 49E834B013812555007A6598 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+ 49E834B113812555007A6598 /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = "<group>"; };
+ 49E834B313812555007A6598 /* AppDelegate_iPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate_iPad.h; sourceTree = "<group>"; };
+ 49E834B413812555007A6598 /* AppDelegate_iPad.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate_iPad.mm; sourceTree = "<group>"; };
+ 49E834B613812555007A6598 /* en */ = {isa&n