author | Grigory Ustinov <grenka@altlinux.org> |
Wed, 28 Nov 2018 17:20:22 +0300 | |
changeset 14335 | 6b56a0a0afb4 |
parent 13204 | e17efd663125 |
permissions | -rw-r--r-- |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
1 |
/* |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
2 |
* Hedgewars-iOS, a Hedgewars port for iOS devices |
6700 | 3 |
* Copyright (c) 2009-2012 Vittorio Giovara <vittorio.giovara@gmail.com> |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
4 |
* |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License as published by |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
7 |
* the Free Software Foundation; version 2 of the License |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
8 |
* |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
13 |
* |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents:
8427
diff
changeset
|
16 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
17 |
*/ |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
18 |
|
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
19 |
|
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
20 |
#import "GameInterfaceBridge.h" |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
21 |
#import "EngineProtocolNetwork.h" |
5158
4941df038b95
stats implemented once again! refactoring complete \o/
koda
parents:
5157
diff
changeset
|
22 |
#import "StatsPageViewController.h" |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
23 |
|
6832 | 24 |
|
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
25 |
static UIViewController *callingController; |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
26 |
|
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
27 |
@implementation GameInterfaceBridge |
6870
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
28 |
@synthesize blackView, savePath, port; |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
29 |
|
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
30 |
#pragma mark - |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
31 |
#pragma mark Instance methods for engine interaction |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
32 |
// prepares the controllers for hosting a game |
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
33 |
- (void)earlyEngineLaunch:(NSDictionary *)optionsOrNil { |
6869
a187c280dd3d
ios: convert audio operation from class to instance, plays better with memory
koda
parents:
6866
diff
changeset
|
34 |
[[AudioManagerController mainManager] fadeOutBackgroundMusic]; |
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
35 |
|
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
36 |
EngineProtocolNetwork *engineProtocol = [[EngineProtocolNetwork alloc] init]; |
6870
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
37 |
self.port = engineProtocol.enginePort; |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
38 |
engineProtocol.delegate = self; |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
39 |
[engineProtocol spawnThread:self.savePath withOptions:optionsOrNil]; |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
40 |
|
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
41 |
// add a black view hiding the background |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
42 |
UIWindow *thisWindow = [[HedgewarsAppDelegate sharedAppDelegate] uiwindow]; |
6667
142fe596e75e
ios check for music preference also for fading methods
koda
parents:
6656
diff
changeset
|
43 |
self.blackView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
44 |
self.blackView.opaque = YES; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
45 |
self.blackView.backgroundColor = [UIColor blackColor]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
46 |
self.blackView.alpha = 0; |
6667
142fe596e75e
ios check for music preference also for fading methods
koda
parents:
6656
diff
changeset
|
47 |
self.blackView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
48 |
[UIView beginAnimations:@"fade out" context:NULL]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
49 |
[UIView setAnimationDuration:1]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
50 |
self.blackView.alpha = 1; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
51 |
[UIView commitAnimations]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
52 |
[thisWindow addSubview:self.blackView]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
53 |
|
6866
efdd2e4fc45c
ios: don't prompt restoring a game that didn't complete loading
koda
parents:
6832
diff
changeset
|
54 |
// keep the point of return for games that completed loading |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
55 |
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; |
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
56 |
[userDefaults setObject:self.savePath forKey:@"savedGamePath"]; |
6866
efdd2e4fc45c
ios: don't prompt restoring a game that didn't complete loading
koda
parents:
6832
diff
changeset
|
57 |
[userDefaults setObject:[NSNumber numberWithBool:NO] forKey:@"saveIsValid"]; |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
58 |
[userDefaults synchronize]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
59 |
|
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
60 |
// let's launch the engine using this -perfomSelector so that the runloop can deal with queued messages first |
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
61 |
[self performSelector:@selector(engineLaunch) withObject:nil afterDelay:0.1f]; |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
62 |
} |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
63 |
|
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
64 |
// cleans up everything |
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
65 |
- (void)lateEngineLaunch { |
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
66 |
// notify views below that they are getting the spotlight again |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
67 |
[[[HedgewarsAppDelegate sharedAppDelegate] uiwindow] makeKeyAndVisible]; |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
68 |
[callingController viewWillAppear:YES]; |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
69 |
|
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
70 |
// remove completed games notification |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
71 |
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
72 |
[userDefaults setObject:@"" forKey:@"savedGamePath"]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
73 |
[userDefaults synchronize]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
74 |
|
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
75 |
// remove the cover view with a transition |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
76 |
self.blackView.alpha = 1; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
77 |
[UIView beginAnimations:@"fade in" context:NULL]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
78 |
[UIView setAnimationDuration:1]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
79 |
self.blackView.alpha = 0; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
80 |
[UIView commitAnimations]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
81 |
[self.blackView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1]; |
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
82 |
|
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
83 |
// can remove the savefile if the replay has ended |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
84 |
if ([HWUtils gameType] == gtSave) |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
85 |
[[NSFileManager defaultManager] removeItemAtPath:self.savePath error:nil]; |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
86 |
|
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
87 |
// restart music and we're done |
6869
a187c280dd3d
ios: convert audio operation from class to instance, plays better with memory
koda
parents:
6866
diff
changeset
|
88 |
[[AudioManagerController mainManager] fadeInBackgroundMusic]; |
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
89 |
[HWUtils setGameStatus:gsNone]; |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
90 |
[HWUtils setGameType:gtNone]; |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
91 |
} |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
92 |
|
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
93 |
// main routine for calling the actual game engine |
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
94 |
- (void)engineLaunch { |
6209 | 95 |
CGFloat width, height; |
96 |
CGFloat screenScale = [[UIScreen mainScreen] safeScale]; |
|
6870
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
97 |
NSString *ipcString = [[NSString alloc] initWithFormat:@"%d",self.port]; |
11203
3465047397da
- Fix for locale string passed to engine (like "ru-FR")
antonc27 <antonc27@mail.ru>
parents:
11116
diff
changeset
|
98 |
|
11223
c51ecb9bcf05
- Retrieving language ID moved to HWUtils
antonc27 <antonc27@mail.ru>
parents:
11210
diff
changeset
|
99 |
NSString *localeString = [[NSString alloc] initWithFormat:@"%@.txt", [HWUtils languageID]]; |
11203
3465047397da
- Fix for locale string passed to engine (like "ru-FR")
antonc27 <antonc27@mail.ru>
parents:
11116
diff
changeset
|
100 |
|
5206 | 101 |
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
102 |
|
6624
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6615
diff
changeset
|
103 |
CGRect screenBounds = [[UIScreen mainScreen] safeBounds]; |
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6615
diff
changeset
|
104 |
width = screenBounds.size.width; |
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6615
diff
changeset
|
105 |
height = screenBounds.size.height; |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
106 |
|
6209 | 107 |
NSString *horizontalSize = [[NSString alloc] initWithFormat:@"%d", (int)(width * screenScale)]; |
108 |
NSString *verticalSize = [[NSString alloc] initWithFormat:@"%d", (int)(height * screenScale)]; |
|
6344 | 109 |
NSString *resourcePath = [[NSString alloc] initWithFormat:@"%@/Data", [[NSBundle mainBundle] resourcePath]]; |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
110 |
|
6078
8c0cc07731e5
headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents:
6020
diff
changeset
|
111 |
NSString *modelId = [HWUtils modelType]; |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
112 |
NSInteger tmpQuality; |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
113 |
if ([modelId hasPrefix:@"iPhone1"] || [modelId hasPrefix:@"iPod1,1"] || [modelId hasPrefix:@"iPod2,1"]) // = iPhone and iPhone 3G or iPod Touch or iPod Touch 2G |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
114 |
tmpQuality = 0x00000001 | 0x00000002 | 0x00000008 | 0x00000040; // rqLowRes | rqBlurryLand | rqSimpleRope | rqKillFlakes |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
115 |
else if ([modelId hasPrefix:@"iPhone2"] || [modelId hasPrefix:@"iPod3"]) // = iPhone 3GS or iPod Touch 3G |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
116 |
tmpQuality = 0x00000002 | 0x00000040; // rqBlurryLand | rqKillFlakes |
5709 | 117 |
else if ([modelId hasPrefix:@"iPad1"] || [modelId hasPrefix:@"iPod4"]) // = iPad 1G or iPod Touch 4G |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
118 |
tmpQuality = 0x00000002; // rqBlurryLand |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
119 |
else // = everything else |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
120 |
tmpQuality = 0; // full quality |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
121 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6266
diff
changeset
|
122 |
// disable ammomenu animation |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6266
diff
changeset
|
123 |
tmpQuality = tmpQuality | 0x00000080; |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
124 |
// disable tooltips on iPhone |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
125 |
if (IS_IPAD() == NO) |
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
126 |
tmpQuality = tmpQuality | 0x00000400; |
8425
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
127 |
NSString *rawQuality = [NSString stringWithFormat:@"%d",tmpQuality]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
128 |
NSString *documentsDirectory = DOCUMENTS_FOLDER(); |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
129 |
|
8425
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
130 |
NSMutableArray *gameParameters = [[NSMutableArray alloc] initWithObjects: |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
131 |
@"--internal", |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
132 |
@"--port", ipcString, |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
133 |
@"--width", horizontalSize, |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
134 |
@"--height", verticalSize, |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
135 |
@"--raw-quality", rawQuality, |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
136 |
@"--locale", localeString, |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
137 |
@"--prefix", resourcePath, |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
138 |
@"--user-prefix", documentsDirectory, |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
139 |
nil]; |
5155
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
140 |
|
8425
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
141 |
NSString *username = [settings objectForKey:@"username"]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
142 |
if ([username length] > 0) { |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
143 |
[gameParameters addObject:@"--nick"]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
144 |
[gameParameters addObject: username]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
145 |
} |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
146 |
|
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
147 |
if ([[settings objectForKey:@"sound"] boolValue] == NO) |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
148 |
[gameParameters addObject:@"--nosound"]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
149 |
|
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
150 |
if ([[settings objectForKey:@"music"] boolValue] == NO) |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
151 |
[gameParameters addObject:@"--nomusic"]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
152 |
|
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
153 |
if([[settings objectForKey:@"alternate"] boolValue] == YES) |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
154 |
[gameParameters addObject:@"--altdmg"]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
155 |
|
8427 | 156 |
#ifdef DEBUG |
157 |
[gameParameters addObject:@"--showfps"]; |
|
158 |
#endif |
|
159 |
||
8425
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
160 |
if ([HWUtils gameType] == gtSave) |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
161 |
[gameParameters addObject:self.savePath]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
162 |
|
6247
6dfad55fd71c
unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents:
6246
diff
changeset
|
163 |
[HWUtils setGameStatus:gsLoading]; |
5194 | 164 |
|
8425
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
165 |
int argc = [gameParameters count]; |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
166 |
const char **argv = (const char **)malloc(sizeof(const char*)*argc); |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
167 |
for (int i = 0; i < argc; i++) |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
168 |
argv[i] = strdup([[gameParameters objectAtIndex:i] UTF8String]); |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
169 |
|
6265
a6944f94c19f
aaand remove also ipcport from the class interface as well
koda
parents:
6263
diff
changeset
|
170 |
// this is the pascal function that starts the game |
11094
595b5700ebac
- Fix for PascalImports and for GenLandPreview
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
171 |
RunEngine(argc, argv); |
8425
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
172 |
|
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
173 |
// cleanup |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
174 |
for (int i = 0; i < argc; i++) |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
175 |
free((void *)argv[i]); |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
176 |
free(argv); |
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
177 |
|
4f226963faef
restored ios project file, updated Game() interface, tweaked arg parsing, updated log writing, minor warnings
koda
parents:
7943
diff
changeset
|
178 |
// moar cleanup |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
179 |
[self lateEngineLaunch]; |
5155
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
180 |
} |
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
181 |
|
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
182 |
|
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
183 |
#pragma mark - |
6870
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
184 |
#pragma mark EngineProtocolDelegate methods |
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
185 |
- (void)gameEndedWithStatistics:(NSArray *)stats { |
12878
f012ce693681
- Present stats page always on main thread
antonc27 <antonc27@mail.ru>
parents:
12877
diff
changeset
|
186 |
[self performSelectorOnMainThread:@selector(presentStats:) withObject:stats waitUntilDone:NO]; |
f012ce693681
- Present stats page always on main thread
antonc27 <antonc27@mail.ru>
parents:
12877
diff
changeset
|
187 |
} |
f012ce693681
- Present stats page always on main thread
antonc27 <antonc27@mail.ru>
parents:
12877
diff
changeset
|
188 |
|
f012ce693681
- Present stats page always on main thread
antonc27 <antonc27@mail.ru>
parents:
12877
diff
changeset
|
189 |
- (void)presentStats:(NSArray *)stats { |
6870
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
190 |
if (stats != nil) { |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
191 |
StatsPageViewController *statsPage = [[StatsPageViewController alloc] init]; |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
192 |
statsPage.statsArray = stats; |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
193 |
statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical; |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
194 |
|
11116
102684240fe8
- Interscreen transitions fixed
Anton Malmygin <antonc27@mail.ru>
parents:
11094
diff
changeset
|
195 |
[callingController presentViewController:statsPage animated:YES completion:nil]; |
6870
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
196 |
} |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
197 |
} |
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
198 |
|
f72cac290325
ios: refactor the code of the after-game statistics display using delegates
koda
parents:
6869
diff
changeset
|
199 |
#pragma mark - |
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
200 |
#pragma mark Class methods for setting up the engine from outsite |
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
201 |
+ (void)registerCallingController:(UIViewController *)controller { |
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
202 |
callingController = controller; |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
203 |
} |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
204 |
|
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
205 |
+ (void)startGame:(TGameType)type atPath:(NSString *)path withOptions:(NSDictionary *)config { |
6321 | 206 |
[HWUtils setGameType:type]; |
6337
84e7d1a5e3df
in class methods you can call [self alloc], as per objc specifications
koda
parents:
6321
diff
changeset
|
207 |
id bridge = [[self alloc] init]; |
6353
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
208 |
[bridge setSavePath:path]; |
d8f62c805619
restore displaying statistics at the end of a game and restore warning lower views that they are going to appear
koda
parents:
6337
diff
changeset
|
209 |
[bridge earlyEngineLaunch:config]; |
6321 | 210 |
} |
211 |
||
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
212 |
+ (void)startLocalGame:(NSDictionary *)withOptions { |
5155
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
213 |
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; |
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
214 |
[outputFormatter setDateFormat:@"yyyy-MM-dd '@' HH.mm"]; |
6263
ec41637ceb64
don't keep track of the savepath and of engineprotocol objects
koda
parents:
6261
diff
changeset
|
215 |
NSString *savePath = [[NSString alloc] initWithFormat:@"%@%@.hws",SAVES_DIRECTORY(),[outputFormatter stringFromDate:[NSDate date]]]; |
5155
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
216 |
|
6301
1259736c0134
engine interaction class refactoring, round 4 or 5, can't remember: this time use the class methods to create an instance object and operates on that, reducing the number of arguments between methods and simplifying memory management
koda
parents:
6276
diff
changeset
|
217 |
// in the rare case in which a savefile with the same name exists the older one must be removed (otherwise it gets corrupted) |
6263
ec41637ceb64
don't keep track of the savepath and of engineprotocol objects
koda
parents:
6261
diff
changeset
|
218 |
if ([[NSFileManager defaultManager] fileExistsAtPath:savePath]) |
ec41637ceb64
don't keep track of the savepath and of engineprotocol objects
koda
parents:
6261
diff
changeset
|
219 |
[[NSFileManager defaultManager] removeItemAtPath:savePath error:nil]; |
5158
4941df038b95
stats implemented once again! refactoring complete \o/
koda
parents:
5157
diff
changeset
|
220 |
|
6321 | 221 |
[self startGame:gtLocal atPath:savePath withOptions:withOptions]; |
5155
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
222 |
} |
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
223 |
|
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
224 |
+ (void)startSaveGame:(NSString *)atPath { |
6321 | 225 |
[self startGame:gtSave atPath:atPath withOptions:nil]; |
5155
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
226 |
} |
f2165724605c
more refactoring, less warnings, less stuff kept around
koda
parents:
5154
diff
changeset
|
227 |
|
13204
e17efd663125
- Fix missions path, still needs refactoring...
antonc27 <antonc27@mail.ru>
parents:
12878
diff
changeset
|
228 |
+ (void)startMissionGame:(NSString *)withSubPath { |
11576
b709768e720c
- Small refactoring for seed command
antonc27 <antonc27@mail.ru>
parents:
11560
diff
changeset
|
229 |
NSString *seedCmd = [self seedCommand]; |
13204
e17efd663125
- Fix missions path, still needs refactoring...
antonc27 <antonc27@mail.ru>
parents:
12878
diff
changeset
|
230 |
NSString *missionPath = [[NSString alloc] initWithFormat:@"escript Missions/%@.lua", withSubPath]; |
11560
b96080df19d0
- Send also some seed when loading missions on iOS (same behavior as on desktop)
antonc27 <antonc27@mail.ru>
parents:
11559
diff
changeset
|
231 |
NSDictionary *missionDict = [[NSDictionary alloc] initWithObjectsAndKeys:missionPath, @"mission_command", seedCmd, @"seed_command", nil]; |
6263
ec41637ceb64
don't keep track of the savepath and of engineprotocol objects
koda
parents:
6261
diff
changeset
|
232 |
|
11560
b96080df19d0
- Send also some seed when loading missions on iOS (same behavior as on desktop)
antonc27 <antonc27@mail.ru>
parents:
11559
diff
changeset
|
233 |
[self startGame:gtMission atPath:nil withOptions:missionDict]; |
6083
72c882c0fd0f
first pass for implementing missions/training selection on ipad (not yet running)
koda
parents:
6078
diff
changeset
|
234 |
} |
72c882c0fd0f
first pass for implementing missions/training selection on ipad (not yet running)
koda
parents:
6078
diff
changeset
|
235 |
|
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
236 |
+ (NSString *)seedCommand { |
6719
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
237 |
// generate a seed |
11559
73e6a3d2f768
- Small refactoring for seed generation on iOS side
antonc27 <antonc27@mail.ru>
parents:
11223
diff
changeset
|
238 |
NSString *seed = [HWUtils seed]; |
6719
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
239 |
NSString *seedCmd = [[NSString alloc] initWithFormat:@"eseed {%@}", seed]; |
11576
b709768e720c
- Small refactoring for seed command
antonc27 <antonc27@mail.ru>
parents:
11560
diff
changeset
|
240 |
return seedCmd; |
b709768e720c
- Small refactoring for seed command
antonc27 <antonc27@mail.ru>
parents:
11560
diff
changeset
|
241 |
} |
b709768e720c
- Small refactoring for seed command
antonc27 <antonc27@mail.ru>
parents:
11560
diff
changeset
|
242 |
|
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
243 |
+ (void)startCampaignMissionGameWithScript:(NSString *)missionScriptName forCampaign:(NSString *)campaignName { |
11577
28afdaa159cb
- Campaign for iOS: Finally can launch campaign's mission game from list!
antonc27 <antonc27@mail.ru>
parents:
11576
diff
changeset
|
244 |
NSString *seedCmd = [self seedCommand]; |
28afdaa159cb
- Campaign for iOS: Finally can launch campaign's mission game from list!
antonc27 <antonc27@mail.ru>
parents:
11576
diff
changeset
|
245 |
NSString *campaignMissionPath = [[NSString alloc] initWithFormat:@"escript Missions/Campaign/%@/%@", campaignName, missionScriptName]; |
28afdaa159cb
- Campaign for iOS: Finally can launch campaign's mission game from list!
antonc27 <antonc27@mail.ru>
parents:
11576
diff
changeset
|
246 |
NSDictionary *campaignMissionDict = [[NSDictionary alloc] initWithObjectsAndKeys:campaignMissionPath, @"mission_command", seedCmd, @"seed_command", nil]; |
28afdaa159cb
- Campaign for iOS: Finally can launch campaign's mission game from list!
antonc27 <antonc27@mail.ru>
parents:
11576
diff
changeset
|
247 |
|
28afdaa159cb
- Campaign for iOS: Finally can launch campaign's mission game from list!
antonc27 <antonc27@mail.ru>
parents:
11576
diff
changeset
|
248 |
[self startGame:gtCampaign atPath:nil withOptions:campaignMissionDict]; |
28afdaa159cb
- Campaign for iOS: Finally can launch campaign's mission game from list!
antonc27 <antonc27@mail.ru>
parents:
11576
diff
changeset
|
249 |
} |
28afdaa159cb
- Campaign for iOS: Finally can launch campaign's mission game from list!
antonc27 <antonc27@mail.ru>
parents:
11576
diff
changeset
|
250 |
|
12877
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11577
diff
changeset
|
251 |
+ (void)startSimpleGame { |
11576
b709768e720c
- Small refactoring for seed command
antonc27 <antonc27@mail.ru>
parents:
11560
diff
changeset
|
252 |
NSString *seedCmd = [self seedCommand]; |
6719
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
253 |
|
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
254 |
// pick a random static map |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
255 |
NSArray *listOfMaps = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:MAPS_DIRECTORY() error:NULL]; |
11210
2e80c9861818
- Better random number generation for front-end: random() replaced with arc4random_uniform()
antonc27 <antonc27@mail.ru>
parents:
11203
diff
changeset
|
256 |
NSString *mapName = [listOfMaps objectAtIndex:arc4random_uniform((int)[listOfMaps count])]; |
6719
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
257 |
NSString *fileCfg = [[NSString alloc] initWithFormat:@"%@/%@/map.cfg",MAPS_DIRECTORY(),mapName]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
258 |
NSString *contents = [[NSString alloc] initWithContentsOfFile:fileCfg encoding:NSUTF8StringEncoding error:NULL]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
259 |
NSArray *split = [contents componentsSeparatedByString:@"\n"]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
260 |
NSString *themeCommand = [[NSString alloc] initWithFormat:@"etheme %@", [split objectAtIndex:0]]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
261 |
NSString *staticMapCommand = [[NSString alloc] initWithFormat:@"emap %@", mapName]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
262 |
|
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
263 |
// select teams with two different colors |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
264 |
NSArray *colorArray = [HWUtils teamColors]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
265 |
NSInteger firstColorIndex, secondColorIndex; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
266 |
do { |
11210
2e80c9861818
- Better random number generation for front-end: random() replaced with arc4random_uniform()
antonc27 <antonc27@mail.ru>
parents:
11203
diff
changeset
|
267 |
firstColorIndex = arc4random_uniform((int)[colorArray count]); |
2e80c9861818
- Better random number generation for front-end: random() replaced with arc4random_uniform()
antonc27 <antonc27@mail.ru>
parents:
11203
diff
changeset
|
268 |
secondColorIndex = arc4random_uniform((int)[colorArray count]); |
6719
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
269 |
} while (firstColorIndex == secondColorIndex); |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
270 |
unsigned int firstColor = [[colorArray objectAtIndex:firstColorIndex] intValue]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
271 |
unsigned int secondColor = [[colorArray objectAtIndex:secondColorIndex] intValue]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
272 |
|
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
273 |
NSDictionary *firstTeam = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:4],@"number", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
274 |
[NSNumber numberWithUnsignedInt:firstColor],@"color", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
275 |
@"Ninjas.plist",@"team",nil]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
276 |
NSDictionary *secondTeam = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:4],@"number", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
277 |
[NSNumber numberWithUnsignedInt:secondColor],@"color", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
278 |
@"Robots.plist",@"team",nil]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
279 |
NSArray *listOfTeams = [[NSArray alloc] initWithObjects:firstTeam,secondTeam,nil]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
280 |
|
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
281 |
// create the configuration |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
282 |
NSDictionary *gameDictionary = [[NSDictionary alloc] initWithObjectsAndKeys: |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
283 |
seedCmd,@"seed_command", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
284 |
@"e$template_filter 0",@"templatefilter_command", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
285 |
@"e$mapgen 0",@"mapgen_command", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
286 |
@"e$maze_size 0",@"mazesize_command", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
287 |
themeCommand,@"theme_command", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
288 |
staticMapCommand,@"staticmap_command", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
289 |
listOfTeams,@"teams_list", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
290 |
@"Default.plist",@"scheme", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
291 |
@"Default.plist",@"weapon", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
292 |
@"",@"mission_command", |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
293 |
nil]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
294 |
|
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
295 |
// launch game |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
296 |
[GameInterfaceBridge startLocalGame:gameDictionary]; |
d2afc6b2d88e
added one button play feature, like in desktop frontend; need to make sure that the hardcoded stuff never gets deleted
koda
parents:
6709
diff
changeset
|
297 |
} |
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
298 |
|
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
diff
changeset
|
299 |
@end |