project_files/HedgewarsMobile/Classes/GameSetup.m
changeset 4149 51200479f9d8
parent 4082 bfe14b38dad1
child 4151 08b95ec1bfdf
equal deleted inserted replaced
4148:eaff5615f976 4149:51200479f9d8
   166     NSArray *basicArray = [schemeDictionary objectForKey:@"basic"];
   166     NSArray *basicArray = [schemeDictionary objectForKey:@"basic"];
   167     NSArray *gamemodArray = [schemeDictionary objectForKey:@"gamemod"];
   167     NSArray *gamemodArray = [schemeDictionary objectForKey:@"gamemod"];
   168     int i = 0;
   168     int i = 0;
   169     int result = 0;
   169     int result = 0;
   170     int mask = 0x00000004;
   170     int mask = 0x00000004;
       
   171     int basicArraySize = [basicArray count] - 1;
   171 
   172 
   172     // pack the gameflags in a single var and send it
   173     // pack the gameflags in a single var and send it
   173     for (NSNumber *value in gamemodArray) {
   174     for (NSNumber *value in gamemodArray) {
   174         if ([value boolValue] == YES)
   175         if ([value boolValue] == YES)
   175             result |= mask;
   176             result |= mask;
   177     }
   178     }
   178     NSString *flags = [[NSString alloc] initWithFormat:@"e$gmflags %d",result];
   179     NSString *flags = [[NSString alloc] initWithFormat:@"e$gmflags %d",result];
   179     [self sendToEngine:flags];
   180     [self sendToEngine:flags];
   180     [flags release];
   181     [flags release];
   181 
   182 
   182     NSString *dmgMod = [[NSString alloc] initWithFormat:@"e$damagepct %d",[[basicArray objectAtIndex:i++] intValue]];
   183     NSString *dmgMod = [[NSString alloc] initWithFormat:@"e$damagepct %d",[[basicArray objectAtIndex:i] intValue]];
   183     [self sendToEngine:dmgMod];
   184     [self sendToEngine:dmgMod];
   184     [dmgMod release];
   185     [dmgMod release];
       
   186     if (i < basicArraySize) i++;
   185 
   187 
   186     // support for endless games
   188     // support for endless games
   187     NSInteger tentativeTurntime = [[basicArray objectAtIndex:i++] intValue];
   189     NSInteger tentativeTurntime = [[basicArray objectAtIndex:i] intValue];
   188     if (tentativeTurntime == 100)
   190     if (tentativeTurntime == 100)
   189         tentativeTurntime = 9999;
   191         tentativeTurntime = 9999;
   190     NSString *turnTime = [[NSString alloc] initWithFormat:@"e$turntime %d",tentativeTurntime * 1000];
   192     NSString *turnTime = [[NSString alloc] initWithFormat:@"e$turntime %d",tentativeTurntime * 1000];
   191     [self sendToEngine:turnTime];
   193     [self sendToEngine:turnTime];
   192     [turnTime release];
   194     [turnTime release];
   193 
   195     if (i < basicArraySize) i++;
   194     result = [[basicArray objectAtIndex:i++] intValue]; // initial health
   196 
   195 
   197     result = [[basicArray objectAtIndex:i] intValue]; // initial health
   196     NSString *sdTime = [[NSString alloc] initWithFormat:@"e$sd_turns %d",[[basicArray objectAtIndex:i++] intValue]];
   198     if (i < basicArraySize) i++;
       
   199 
       
   200     NSString *sdTime = [[NSString alloc] initWithFormat:@"e$sd_turns %d",[[basicArray objectAtIndex:i] intValue]];
   197     [self sendToEngine:sdTime];
   201     [self sendToEngine:sdTime];
   198     [sdTime release];
   202     [sdTime release];
   199 
   203     if (i < basicArraySize) i++;
   200     NSString *crateDrops = [[NSString alloc] initWithFormat:@"e$casefreq %d",[[basicArray objectAtIndex:i++] intValue]];
   204 
       
   205     NSString *crateDrops = [[NSString alloc] initWithFormat:@"e$casefreq %d",[[basicArray objectAtIndex:i] intValue]];
   201     [self sendToEngine:crateDrops];
   206     [self sendToEngine:crateDrops];
   202     [crateDrops release];
   207     [crateDrops release];
   203 
   208     if (i < basicArraySize) i++;
   204     NSString *minesTime = [[NSString alloc] initWithFormat:@"e$minestime %d",[[basicArray objectAtIndex:i++] intValue] * 1000];
   209 
       
   210     NSString *healthProb = [[NSString alloc] initWithFormat:@"e$healthprob %d",[[basicArray objectAtIndex:i] intValue]];
       
   211     [self sendToEngine:healthProb];
       
   212     [healthProb release];
       
   213     if (i < basicArraySize) i++;
       
   214 
       
   215     NSString *healthAmount = [[NSString alloc] initWithFormat:@"e$hcaseamount %d",[[basicArray objectAtIndex:i] intValue]];
       
   216     [self sendToEngine:healthAmount];
       
   217     [healthAmount release];
       
   218     if (i < basicArraySize) i++;
       
   219 
       
   220     NSString *minesTime = [[NSString alloc] initWithFormat:@"e$minestime %d",[[basicArray objectAtIndex:i] intValue] * 1000];
   205     [self sendToEngine:minesTime];
   221     [self sendToEngine:minesTime];
   206     [minesTime release];
   222     [minesTime release];
   207 
   223     if (i < basicArraySize) i++;
   208     NSString *minesNumber = [[NSString alloc] initWithFormat:@"e$minesnum %d",[[basicArray objectAtIndex:i++] intValue]];
   224 
       
   225     NSString *minesNumber = [[NSString alloc] initWithFormat:@"e$minesnum %d",[[basicArray objectAtIndex:i] intValue]];
   209     [self sendToEngine:minesNumber];
   226     [self sendToEngine:minesNumber];
   210     [minesNumber release];
   227     [minesNumber release];
   211 
   228     if (i < basicArraySize) i++;
   212     NSString *dudMines = [[NSString alloc] initWithFormat:@"e$minedudpct %d",[[basicArray objectAtIndex:i++] intValue]];
   229 
       
   230     NSString *dudMines = [[NSString alloc] initWithFormat:@"e$minedudpct %d",[[basicArray objectAtIndex:i] intValue]];
   213     [self sendToEngine:dudMines];
   231     [self sendToEngine:dudMines];
   214     [dudMines release];
   232     [dudMines release];
   215 
   233     if (i < basicArraySize) i++;
   216     NSString *explosives = [[NSString alloc] initWithFormat:@"e$explosives %d",[[basicArray objectAtIndex:i++] intValue]];
   234 
       
   235     NSString *explosives = [[NSString alloc] initWithFormat:@"e$explosives %d",[[basicArray objectAtIndex:i] intValue]];
   217     [self sendToEngine:explosives];
   236     [self sendToEngine:explosives];
   218     [explosives release];
   237     [explosives release];
       
   238     if (i < basicArraySize) i++;
   219 
   239 
   220     DLog(@"Sent %d flags and %d modes", [gamemodArray count], i);
   240     DLog(@"Sent %d flags and %d modes", [gamemodArray count], i);
   221     [schemeDictionary release];
   241     [schemeDictionary release];
   222     return result;
   242     return result;
   223 }
   243 }
   224 
   244 
   225 #pragma mark -
   245 #pragma mark -
   226 #pragma mark Thread/Network relevant code
   246 #pragma mark Thread/Network relevant code
   227 // select one of GameSetup method and execute it in a seprate thread
   247 // select one of GameSetup method and execute it in a seprate thread
   228 -(void) startThread: (NSString *) selector {
   248 -(void) startThread:(NSString *)selector {
   229     SEL usage = NSSelectorFromString(selector);
   249     SEL usage = NSSelectorFromString(selector);
   230     [NSThread detachNewThreadSelector:usage toTarget:self withObject:nil];
   250     [NSThread detachNewThreadSelector:usage toTarget:self withObject:nil];
   231 }
   251 }
   232 
   252 
   233 -(void) dumpRawData:(const uint8_t*)buffer ofSize:(uint8_t) length {
   253 -(void) dumpRawData:(const uint8_t*)buffer ofSize:(uint8_t) length {