summary refs log tree commit diff stats
path: root/Classes/GameMode.m
diff options
context:
space:
mode:
authorStarla Insigna <starla4444@gmail.com>2011-08-09 21:36:09 -0400
committerStarla Insigna <starla4444@gmail.com>2011-08-09 21:36:09 -0400
commit002dc99a071a4a8f7d2afc15d1fdf2ae0312faed (patch)
tree82808d85a131ed0f970b374828a3e80ee1fb8d35 /Classes/GameMode.m
parent1ed37fda409479769c8d110aa22d5dadc9d2cb85 (diff)
downloadcartcollect-002dc99a071a4a8f7d2afc15d1fdf2ae0312faed.tar.gz
cartcollect-002dc99a071a4a8f7d2afc15d1fdf2ae0312faed.tar.bz2
cartcollect-002dc99a071a4a8f7d2afc15d1fdf2ae0312faed.zip
Abstracted a lot of GameLayer's functionality out
In order to prepare for tutorial mode (and eventually, the other game modes), a lot of GameLayer's functionality (reading the accelerometer, moving the cart, moving falling objects, reacting to collisions…) has been abstracted out to FallingObject and subclasses of FallingObject, as well as a new Cart class, and GameMode, a new superclass of GameLayer. The only things that were not abstracted out that probably will be in the future are the pause functionality and the tutorial bubble functionality (which will in fact be moved to the tutorial mode class).

A lot of work was also done to cut down on compiler warnings and a lot of #imports were moved from header files to implementation files because I realized THAT'S HOW YOU'RE SUPPOSED TO DO IT.

Refs #193
Diffstat (limited to 'Classes/GameMode.m')
-rw-r--r--Classes/GameMode.m78
1 files changed, 78 insertions, 0 deletions
diff --git a/Classes/GameMode.m b/Classes/GameMode.m new file mode 100644 index 0000000..6fa31e5 --- /dev/null +++ b/Classes/GameMode.m
@@ -0,0 +1,78 @@
1//
2// GameMode.m
3// Cart Collect
4//
5// Created by Starla Insigna on 8/9/11.
6// Copyright 2011 Four Island. All rights reserved.
7//
8
9#import "GameMode.h"
10#import "FallingObject.h"
11
12@implementation GameMode
13
14@synthesize cart, score, lives;
15
16+ (CCScene*)scene
17{
18 CCScene* scene = [CCScene node];
19
20 GameMode* layer = [self node];
21 layer.tag = GAME_LAYER;
22 [scene addChild:layer];
23
24 scene.tag = GAME_SCENE;
25
26 return scene;
27}
28
29- (id)init
30{
31 self = [super init];
32
33 if (nil != self)
34 {
35 isAccelerometerEnabled_ = YES;
36
37 objects = [[NSMutableSet alloc] init];
38 }
39
40 return self;
41}
42
43- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
44{
45 [cart accelerometer:accelerometer didAccelerate:acceleration];
46}
47
48- (void)onEnter
49{
50 [super onEnter];
51
52 [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / 60)];
53 [self schedule:@selector(tick:) interval:1.0f/60.0f];
54}
55
56- (void)tick:(ccTime)dt
57{
58 [cart tick];
59
60 for (FallingObject* object in objects)
61 {
62 if ([object tick])
63 {
64 [object retain];
65 [self removeChild:object.sprite cleanup:YES];
66 [objects removeObject:object];
67 }
68 }
69}
70
71- (void)dealloc
72{
73 [objects release];
74 [cart release];
75 [super dealloc];
76}
77
78@end