author | Wuzzy <Wuzzy2@mail.ru> |
Wed, 15 May 2019 04:06:47 +0200 | |
changeset 14974 | 6c17ef373079 |
parent 12872 | 00215a7ec5f5 |
permissions | -rw-r--r-- |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
1 |
/* |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
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> |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
4 |
* |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License as published by |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
7 |
* the Free Software Foundation; version 2 of the License |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
8 |
* |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
13 |
* |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
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:
8441
diff
changeset
|
16 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
17 |
*/ |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
18 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
19 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
20 |
#import "MapPreviewButtonView.h" |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
21 |
#import <pthread.h> |
6109
f6726ec81e64
finally removed the white border glitch of the ipad preview map, moved initialization from IB to code
koda
parents:
6078
diff
changeset
|
22 |
#import <QuartzCore/QuartzCore.h> |
f6726ec81e64
finally removed the white border glitch of the ipad preview map, moved initialization from IB to code
koda
parents:
6078
diff
changeset
|
23 |
|
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
24 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
25 |
#define INDICATOR_TAG 7654 |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
26 |
|
11138
05853b1df2a2
- Property for port in MapPreviewButtonView
antonc27 <antonc27@mail.ru>
parents:
11137
diff
changeset
|
27 |
@interface MapPreviewButtonView () |
11148
064a53861759
- Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents:
11138
diff
changeset
|
28 |
@property (nonatomic) NSInteger port; |
11138
05853b1df2a2
- Property for port in MapPreviewButtonView
antonc27 <antonc27@mail.ru>
parents:
11137
diff
changeset
|
29 |
@end |
05853b1df2a2
- Property for port in MapPreviewButtonView
antonc27 <antonc27@mail.ru>
parents:
11137
diff
changeset
|
30 |
|
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
31 |
@implementation MapPreviewButtonView |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
32 |
@synthesize delegate; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
33 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
34 |
- (id)initWithFrame:(CGRect)frame { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
35 |
if ((self = [super initWithFrame:frame])) { |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
36 |
delegate = nil; |
6109
f6726ec81e64
finally removed the white border glitch of the ipad preview map, moved initialization from IB to code
koda
parents:
6078
diff
changeset
|
37 |
self.backgroundColor = [UIColor whiteColor]; |
f6726ec81e64
finally removed the white border glitch of the ipad preview map, moved initialization from IB to code
koda
parents:
6078
diff
changeset
|
38 |
self.layer.cornerRadius = 12; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
39 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
40 |
return self; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
41 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
42 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
43 |
#pragma mark - |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
44 |
#pragma mark image wrappers |
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
45 |
- (void)setImageRounded:(UIImage *)image forState:(UIControlState)controlState { |
6109
f6726ec81e64
finally removed the white border glitch of the ipad preview map, moved initialization from IB to code
koda
parents:
6078
diff
changeset
|
46 |
[self setImage:[image makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:controlState]; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
47 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
48 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
49 |
- (void)setImageRounded:(UIImage *)image { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
50 |
[self setImageRounded:image forState:UIControlStateNormal]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
51 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
52 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
53 |
#pragma mark - |
8441 | 54 |
#pragma mark preview |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
55 |
-(int) sendToEngine:(NSString *)string { |
11240
57891137ffef
- Fix for sending to engine non-english characters
antonc27 <antonc27@mail.ru>
parents:
11148
diff
changeset
|
56 |
unsigned char length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
57 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
58 |
SDLNet_TCP_Send(csd, &length, 1); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
59 |
return SDLNet_TCP_Send(csd, [string UTF8String], length); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
60 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
61 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
62 |
- (void)engineProtocol:(uint8_t *)unpackedMap { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
63 |
IPaddress ip; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
64 |
BOOL serverQuit = NO; |
6841
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
65 |
uint8_t packedMap[128*32]; |
11138
05853b1df2a2
- Property for port in MapPreviewButtonView
antonc27 <antonc27@mail.ru>
parents:
11137
diff
changeset
|
66 |
self.port = [HWUtils randomPort]; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
67 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
68 |
if (SDLNet_Init() < 0) { |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
69 |
DLog(@"SDLNet_Init: %s", SDLNet_GetError()); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
70 |
serverQuit = YES; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
71 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
72 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
73 |
// Resolving the host using NULL make network interface to listen |
11138
05853b1df2a2
- Property for port in MapPreviewButtonView
antonc27 <antonc27@mail.ru>
parents:
11137
diff
changeset
|
74 |
if (SDLNet_ResolveHost(&ip, NULL, self.port) < 0) { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
75 |
DLog(@"SDLNet_ResolveHost: %s\n", SDLNet_GetError()); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
76 |
serverQuit = YES; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
77 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
78 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
79 |
// Open a connection with the IP provided (listen on the host's port) |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
80 |
if (!(sd = SDLNet_TCP_Open(&ip))) { |
11148
064a53861759
- Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents:
11138
diff
changeset
|
81 |
DLog(@"SDLNet_TCP_Open: %s %ld\n", SDLNet_GetError(), (long)self.port); |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
82 |
serverQuit = YES; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
83 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
84 |
|
11133
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
85 |
// launch the preview in background here so that we're sure the tcp channel is open |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
86 |
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{ |
11148
064a53861759
- Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents:
11138
diff
changeset
|
87 |
NSString *ipcString = [[NSString alloc] initWithFormat:@"%ld", (long)self.port]; |
11133
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
88 |
NSString *documentsDirectory = DOCUMENTS_FOLDER(); |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
89 |
|
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
90 |
NSMutableArray *gameParameters = [[NSMutableArray alloc] initWithObjects: |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
91 |
@"--internal", |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
92 |
@"--port", ipcString, |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
93 |
@"--user-prefix", documentsDirectory, |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
94 |
@"--landpreview", |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
95 |
nil]; |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
96 |
|
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
97 |
int argc = [gameParameters count]; |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
98 |
const char **argv = (const char **)malloc(sizeof(const char*)*argc); |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
99 |
for (int i = 0; i < argc; i++) |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
100 |
argv[i] = strdup([[gameParameters objectAtIndex:i] UTF8String]); |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
101 |
|
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
102 |
RunEngine(argc, argv); |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
103 |
|
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
104 |
// cleanup |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
105 |
for (int i = 0; i < argc; i++) |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
106 |
free((void *)argv[i]); |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
107 |
free(argv); |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
108 |
}); |
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
109 |
|
11148
064a53861759
- Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents:
11138
diff
changeset
|
110 |
DLog(@"Waiting for a client on port %ld", (long)self.port); |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
111 |
while (!serverQuit) { |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
112 |
/* This check the sd if there is a pending connection. |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
113 |
* If there is one, accept that, and open a new socket for communicating */ |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
114 |
csd = SDLNet_TCP_Accept(sd); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
115 |
if (NULL != csd) { |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
116 |
DLog(@"Client found"); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
117 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
118 |
NSDictionary *dictForEngine = [self getDataForEngine]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
119 |
[self sendToEngine:[dictForEngine objectForKey:@"seedCommand"]]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
120 |
[self sendToEngine:[dictForEngine objectForKey:@"templateFilterCommand"]]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
121 |
[self sendToEngine:[dictForEngine objectForKey:@"mapGenCommand"]]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
122 |
[self sendToEngine:[dictForEngine objectForKey:@"mazeSizeCommand"]]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
123 |
[self sendToEngine:@"!"]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
124 |
|
6841
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
125 |
memset(packedMap, 0, 128*32); |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
126 |
SDLNet_TCP_Recv(csd, packedMap, 128*32); |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
127 |
SDLNet_TCP_Recv(csd, &maxHogs, sizeof(uint8_t)); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
128 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
129 |
SDLNet_TCP_Close(csd); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
130 |
serverQuit = YES; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
131 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
132 |
} |
11138
05853b1df2a2
- Property for port in MapPreviewButtonView
antonc27 <antonc27@mail.ru>
parents:
11137
diff
changeset
|
133 |
[HWUtils freePort:self.port]; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
134 |
SDLNet_TCP_Close(sd); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
135 |
SDLNet_Quit(); |
6841
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
136 |
|
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
137 |
// spread the packed bits in an array of bytes (one pixel per element, 0= transparent 1= color) |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
138 |
int k = 0; |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
139 |
memset(unpackedMap, 255, 128*32*8); // 255 is white |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
140 |
for (int i = 0; i < 32*128; i++) { |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
141 |
for (int j = 7; j >= 0; j--) { |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
142 |
if (((packedMap[i] >> j) & 0x01) != 0) |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
143 |
unpackedMap[k] = 170; // level of gray [0-255] |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
144 |
k++; |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
145 |
} |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
146 |
} |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
147 |
return; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
148 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
149 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
150 |
- (void)drawingThread { |
11137
14f50dde3e8c
- Using of @autoreleasepool is better
Anton Malmygin <antonc27@mail.ru>
parents:
11133
diff
changeset
|
151 |
@autoreleasepool { |
14f50dde3e8c
- Using of @autoreleasepool is better
Anton Malmygin <antonc27@mail.ru>
parents:
11133
diff
changeset
|
152 |
|
6841
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
153 |
uint8_t unpackedMap[128*32*8]; |
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
154 |
[self engineProtocol:unpackedMap]; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
155 |
|
6841
3633928a3188
let's outsmart the compiler for no particular benefit
koda
parents:
6832
diff
changeset
|
156 |
// http://developer.apple.com/mac/library/qa/qa2001/qa1037.html |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
157 |
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray(); |
11133
fa3d227fb308
- Fix for retrieving 'Maze' preview genration
antonc27 <antonc27@mail.ru>
parents:
10108
diff
changeset
|
158 |
CGContextRef bitmapImage = CGBitmapContextCreate(unpackedMap, 256, 128, 8, 256, colorspace, (CGBitmapInfo)kCGImageAlphaNone); |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
159 |
CGColorSpaceRelease(colorspace); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
160 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
161 |
CGImageRef previewCGImage = CGBitmapContextCreateImage(bitmapImage); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
162 |
CGContextRelease(bitmapImage); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
163 |
UIImage *previewImage = [[UIImage alloc] initWithCGImage:previewCGImage]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
164 |
CGImageRelease(previewCGImage); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
165 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
166 |
// all these are performed on the main thread to prevent a leak |
6109
f6726ec81e64
finally removed the white border glitch of the ipad preview map, moved initialization from IB to code
koda
parents:
6078
diff
changeset
|
167 |
[self performSelectorOnMainThread:@selector(setImageRounded:) |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
168 |
withObject:previewImage |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
169 |
waitUntilDone:NO]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
170 |
[self performSelectorOnMainThread:@selector(setLabelText:) |
11148
064a53861759
- Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents:
11138
diff
changeset
|
171 |
withObject:[NSString stringWithFormat:@"%ld", (long)maxHogs] |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
172 |
waitUntilDone:NO]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
173 |
[self performSelectorOnMainThread:@selector(turnOnWidgets) |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
174 |
withObject:nil |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
175 |
waitUntilDone:NO]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
176 |
[self performSelectorOnMainThread:@selector(removeIndicator) |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
177 |
withObject:nil |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
178 |
waitUntilDone:NO]; |
11137
14f50dde3e8c
- Using of @autoreleasepool is better
Anton Malmygin <antonc27@mail.ru>
parents:
11133
diff
changeset
|
179 |
|
14f50dde3e8c
- Using of @autoreleasepool is better
Anton Malmygin <antonc27@mail.ru>
parents:
11133
diff
changeset
|
180 |
} |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
181 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
182 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
183 |
- (void)updatePreviewWithSeed:(NSString *)seed { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
184 |
// remove the current preview and title |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
185 |
[self setImage:nil forState:UIControlStateNormal]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
186 |
[self setTitle:nil forState:UIControlStateNormal]; |
8441 | 187 |
|
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
188 |
// don't display preview on slower device, too slow and memory hog |
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:
5207
diff
changeset
|
189 |
if (IS_NOT_POWERFUL([HWUtils modelType])) { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
190 |
[self setTitle:NSLocalizedString(@"Preview not available",@"") forState:UIControlStateNormal]; |
4082 | 191 |
[self turnOnWidgets]; |
8441 | 192 |
} else { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
193 |
// add a very nice spinning wheel |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
194 |
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
195 |
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
196 |
indicator.center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2); |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
197 |
indicator.tag = INDICATOR_TAG; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
198 |
[indicator startAnimating]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
199 |
[self addSubview:indicator]; |
8441 | 200 |
|
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
201 |
// let's draw in a separate thread so the gui can work; at the end it restore other widgets |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
202 |
[NSThread detachNewThreadSelector:@selector(drawingThread) toTarget:self withObject:nil]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
203 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
204 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
205 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
206 |
- (void)updatePreviewWithFile:(NSString *)filePath { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
207 |
UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
208 |
[self setImageRounded:image forState:UIControlStateNormal]; |
6219 | 209 |
self.backgroundColor = [UIColor whiteColor]; |
210 |
self.layer.cornerRadius = 12; |
|
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
211 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
212 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
213 |
- (void)removeIndicator { |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
214 |
UIActivityIndicatorView *indicator = (UIActivityIndicatorView *)[self viewWithTag:INDICATOR_TAG]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
215 |
if (indicator) { |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
216 |
[indicator stopAnimating]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
217 |
[indicator removeFromSuperview]; |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
218 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
219 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
220 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
221 |
#pragma mark - |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
222 |
#pragma mark delegate |
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
223 |
- (void)turnOnWidgets { |
6115
485cfecadc9a
HUGE refactoring of the ipad interface, finally understood how to use interface builder with custom uiviewcontrollers, as well as converted some uitableviewcontrollers to uiviewcontrollers for simplicity
koda
parents:
6109
diff
changeset
|
224 |
if ([self.delegate respondsToSelector:@selector(turnOnWidgets)]) |
485cfecadc9a
HUGE refactoring of the ipad interface, finally understood how to use interface builder with custom uiviewcontrollers, as well as converted some uitableviewcontrollers to uiviewcontrollers for simplicity
koda
parents:
6109
diff
changeset
|
225 |
[self.delegate turnOnWidgets]; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
226 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
227 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
228 |
- (void)setLabelText:(NSString *)string { |
6115
485cfecadc9a
HUGE refactoring of the ipad interface, finally understood how to use interface builder with custom uiviewcontrollers, as well as converted some uitableviewcontrollers to uiviewcontrollers for simplicity
koda
parents:
6109
diff
changeset
|
229 |
if ([self.delegate respondsToSelector:@selector(setMaxLabelText:)]) |
485cfecadc9a
HUGE refactoring of the ipad interface, finally understood how to use interface builder with custom uiviewcontrollers, as well as converted some uitableviewcontrollers to uiviewcontrollers for simplicity
koda
parents:
6109
diff
changeset
|
230 |
[self.delegate setMaxLabelText:string]; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
231 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
232 |
|
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11240
diff
changeset
|
233 |
- (NSDictionary *)getDataForEngine { |
6115
485cfecadc9a
HUGE refactoring of the ipad interface, finally understood how to use interface builder with custom uiviewcontrollers, as well as converted some uitableviewcontrollers to uiviewcontrollers for simplicity
koda
parents:
6109
diff
changeset
|
234 |
if ([self.delegate respondsToSelector:@selector(getDataForEngine)]) |
485cfecadc9a
HUGE refactoring of the ipad interface, finally understood how to use interface builder with custom uiviewcontrollers, as well as converted some uitableviewcontrollers to uiviewcontrollers for simplicity
koda
parents:
6109
diff
changeset
|
235 |
return [self.delegate getDataForEngine]; |
485cfecadc9a
HUGE refactoring of the ipad interface, finally understood how to use interface builder with custom uiviewcontrollers, as well as converted some uitableviewcontrollers to uiviewcontrollers for simplicity
koda
parents:
6109
diff
changeset
|
236 |
return nil; |
3910
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
237 |
} |
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
238 |
|
dd47efbdec46
move all preview drawing code into its own class (for a simplified and more readable MapConfigViewController)
koda
parents:
diff
changeset
|
239 |
@end |