merge
authornemo
Tue, 19 Oct 2010 19:47:17 -0400
changeset 3985 57121975b64b
parent 3974 91ac041ecb20 (current diff)
parent 3983 aa24192417a8 (diff)
child 3986 99178ffb817d
merge
hedgewars/GSHandlers.inc
project_files/HedgewarsMobile/Resources/Frontend-iPad/bluebox-squeezed.png
project_files/HedgewarsMobile/Resources/Frontend-iPad/bluebox.png
share/hedgewars/Data/Forts/Barrelhouse-preview.png
share/hedgewars/Data/Forts/BarrelhouseL.png
share/hedgewars/Data/Forts/BarrelhouseR.png
share/hedgewars/Data/Forts/Island-preview.png
share/hedgewars/Data/Forts/IslandL.png
share/hedgewars/Data/Forts/IslandR.png
--- a/hedgewars/GSHandlers.inc	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/GSHandlers.inc	Tue Oct 19 19:47:17 2010 -0400
@@ -422,7 +422,7 @@
                 begin
                 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
                 for i:= 0 to 2 do
-                    AddGear(hwRound(Gear^.X) - 30 + GetRandom(60), hwRound(Gear^.Y) - 20 + GetRandom(40), gtPoisonCloud, 0, _0, _0, 0);
+                    AddGear(int64(hwRound(Gear^.X)) - 30 + GetRandom(60), int64(hwRound(Gear^.Y)) - 20 + GetRandom(40), gtPoisonCloud, 0, _0, _0, 0);
                 end;
         end;
     DeleteGear(Gear);
@@ -4101,6 +4101,8 @@
     DrawCircle(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Radius, 1.5, 0, 0, $FF,
             $FF);
 
+    doStepHedgehogMoving(hh^.Gear);
+
     if ((Gear^.Message and gmUp) <> 0) then begin
         if (GameTicks and $F) <> 0 then exit;
     end else begin
@@ -4109,9 +4111,14 @@
 
     graves := GearsNear(hh^.Gear, gtGrave, Gear^.Radius);
 
+    if Length(graves) = 0 then begin
+        Gear^.Timer := 250;
+        Gear^.doStep := @doStepIdle;
+        exit;
+    end;
+
     if ((Gear^.Message and gmAttack) <> 0) and (hh^.Gear^.Health > 0) then begin
         i := getRandom(Length(graves));
-        writeln(i);
         dec(hh^.Gear^.Health);
         inc(graves[i]^.Health);
 {-for i:= 0 to High(graves) do begin
--- a/hedgewars/PascalExports.pas	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/PascalExports.pas	Tue Oct 19 19:47:17 2010 -0400
@@ -267,6 +267,16 @@
     exit (str2pchar(trammo[Ammoz[TAmmoType(whichone+1)].NameId]));
 end;
 
+function HW_getWeaponCaptionByIndex(whichone: LongInt): PChar; cdecl; export;
+begin
+    exit (str2pchar(trammoc[Ammoz[TAmmoType(whichone+1)].NameId]));
+end;
+
+function HW_getWeaponDescriptionByIndex(whichone: LongInt): PChar; cdecl; export;
+begin
+    exit (str2pchar(trammod[Ammoz[TAmmoType(whichone+1)].NameId]));
+end;
+
 function HW_getNumberOfWeapons:LongInt; cdecl; export;
 begin
     exit(ord(high(TAmmoType)));
--- a/hedgewars/VGSHandlers.inc	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/VGSHandlers.inc	Tue Oct 19 19:47:17 2010 -0400
@@ -36,7 +36,7 @@
   
     if (round(X) >= cLeftScreenBorder) and
        (round(X) <= cRightScreenBorder) and
-       (round(Y) <= (LAND_HEIGHT + 75)) and 
+       (round(Y) <= (int64(LAND_HEIGHT) + 75)) and
        (Timer > 0) and (Timer-Steps > 0) then
         begin
         if tdX > 0 then sign := 1
@@ -54,7 +54,7 @@
         if round(X) < cLeftScreenBorder then X:= X + cScreenSpace else
         if round(X) > cRightScreenBorder then X:= X - cScreenSpace;
         // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + float(25); // For if flag is set for flakes rising upwards?
-        if round(Y) > (LAND_HEIGHT + 75) then Y:= Y - float(1024 + 150); // TODO - configure in theme (jellies for example could use limited range)
+        if round(Y) > (int64(LAND_HEIGHT) + 75) then Y:= Y - float(1024 + 150); // TODO - configure in theme (jellies for example could use limited range)
         Timer:= 0;
         tdX:= 0;
         tdY:= 0
@@ -84,7 +84,7 @@
 t := 8 * AngleSin(s mod 2048).QWordValue / 4294967296;
 if (s < 2048) then t := -t;
 
-Gear^.Y := LAND_HEIGHT-1184 + Gear^.Timer mod 8 + t;
+Gear^.Y := int64(LAND_HEIGHT) - 1184 + Gear^.Timer mod 8 + t;
 
 if round(Gear^.X) < cLeftScreenBorder then Gear^.X:= Gear^.X + cScreenSpace else
 if round(Gear^.X) > cRightScreenBorder then Gear^.X:= Gear^.X - cScreenSpace
@@ -480,7 +480,7 @@
 
 procedure doStepHealthTagWorkUnderWater(Gear: PVisualGear; Steps: Longword);
 begin
-if round(Gear^.Y) < cWaterLine + 10 then
+if round(Gear^.Y) < int64(cWaterLine) + 10 then
     DeleteVisualGear(Gear)
 else
     Gear^.Y:= Gear^.Y - 0.08 * Steps;
--- a/hedgewars/hwengine.pas	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/hwengine.pas	Tue Oct 19 19:47:17 2010 -0400
@@ -175,7 +175,7 @@
         if isTerminated = false then
         begin
             CurrTime:= SDL_GetTicks;
-            if PrevTime + cTimerInterval <= CurrTime then
+            if PrevTime + longword(cTimerInterval) <= CurrTime then
             begin
                 DoTimer(CurrTime - PrevTime);
                 PrevTime:= CurrTime
--- a/hedgewars/uConsts.pas	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/uConsts.pas	Tue Oct 19 19:47:17 2010 -0400
@@ -2180,7 +2180,7 @@
             NameTex: nil;
             Probability: 0;
             NumberInCase: 1;
-            Ammo: (Propz: ammoprop_NoCrosshair;
+            Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_NoRoundEndHint;
                 Count: 1;
                 NumPerTurn: 0;
                 Timer: 0;
--- a/hedgewars/uGears.pas	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/uGears.pas	Tue Oct 19 19:47:17 2010 -0400
@@ -534,7 +534,7 @@
                 end;
  gtPoisonCloud: begin
                 gear^.Timer:= 5000;
-                gear^.dY:= int2hwfloat((-4 + getRandom(8))) / 1000;
+                gear^.dY:= int2hwfloat(-4 + longint(getRandom(8))) / 1000;
                 end;
  gtResurrector: begin
                 gear^.Radius := 100;
@@ -1034,8 +1034,8 @@
     begin
     if not (((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then
         exit;
-    DrawTexture(round(sx + 16), round(sy + 16), ropeIconTex);
-    DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, round(sx + 30), round(sy + 30), ord(CurAmmoType) - 1, 1, 32, 32);
+    DrawTexture(round(int64(sx) + 16), round(int64(sy) + 16), ropeIconTex);
+    DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, round(int64(sx) + 30), round(int64(sy) + 30), ord(CurAmmoType) - 1, 1, 32, 32);
     end;
 end;
 
--- a/hedgewars/uLandObjects.pas	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/uLandObjects.pas	Tue Oct 19 19:47:17 2010 -0400
@@ -292,9 +292,9 @@
                    end
                 end;
              inc(y, 3);
-         until y > LAND_HEIGHT - 1 - Height;
+         until y > int64(LAND_HEIGHT) - 1 - Height;
          inc(x, getrandom(6) + 3)
-     until x > LAND_WIDTH - 1 - Width;
+     until x > int64(LAND_WIDTH) - 1 - Width;
      bRes:= cnt <> 0;
      if bRes then
         begin
@@ -341,9 +341,9 @@
                 end
             end;
             inc(y, 12);
-        until y > LAND_HEIGHT - 1 - Height - 8;
+        until y > int64(LAND_HEIGHT) - 1 - Height - 8;
         inc(x, getrandom(12) + 12)
-    until x > LAND_WIDTH - 1 - Width;
+    until x > int64(LAND_WIDTH) - 1 - Width;
     bRes:= cnt <> 0;
     if bRes then
         begin
@@ -455,7 +455,7 @@
     Readln(f, vobFramesCount, vobFrameTicks, vobVelocity, vobFallSpeed);
 
 // adjust amount of flakes scaled by screen space
-vobCount:= vobCount * cScreenSpace div LAND_WIDTH;
+vobCount:= longint(vobCount) * cScreenSpace div LAND_WIDTH;
 
 if (cReducedQuality and rqKillFlakes) <> 0 then
     vobCount:= 0;
--- a/hedgewars/uVisualGears.pas	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/uVisualGears.pas	Tue Oct 19 19:47:17 2010 -0400
@@ -370,7 +370,7 @@
       if Gear^.Kind = vgtFlake then
           begin
           // Damage calc from doMakeExplosion
-          dmg:= min(101,Radius  + cHHRadius div 2 - (round(abs(Gear^.X - float(X))+abs(Gear^.Y - float(Y))) div 5));
+          dmg:= min(101, int64(Radius) + cHHRadius div 2 - (round(abs(Gear^.X - float(X))+abs(Gear^.Y - float(Y))) div 5));
           if dmg > 1 then
               begin
               Gear^.tdX:= 0.02 * dmg + 0.01;
--- a/hedgewars/uWorld.pas	Tue Oct 19 19:46:43 2010 -0400
+++ b/hedgewars/uWorld.pas	Tue Oct 19 19:47:17 2010 -0400
@@ -615,8 +615,8 @@
                 tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle);
                 for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do
                     DrawSprite(sprPower,
-                            hwRound(Gear^.X) + GetLaunchX(CurAmmoType, hwSign(Gear^.dX), Gear^.Angle) + round(WorldDx + tdx * (24 + i * 2)) - 16,
-                            hwRound(Gear^.Y) + GetLaunchY(CurAmmoType, Gear^.Angle) + round(WorldDy + tdy * (24 + i * 2)) - 16,
+                            int64(hwRound(Gear^.X)) + GetLaunchX(CurAmmoType, hwSign(Gear^.dX), Gear^.Angle) + round(WorldDx + tdx * (24 + i * 2)) - 16,
+                            int64(hwRound(Gear^.Y)) + GetLaunchY(CurAmmoType, Gear^.Angle) + round(WorldDy + tdy * (24 + i * 2)) - 16,
                             i)
                 end
         end;
--- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.h	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.h	Tue Oct 19 19:47:17 2010 -0400
@@ -23,16 +23,24 @@
 
 
 @interface AmmoMenuViewController : UIViewController {
-    UIImage *weaponsImage;
     NSArray *buttonsArray;
+    NSArray *imagesArray;
     
+    UILabel *nameLabel;
+    UILabel *extraLabel;
+    UILabel *captionLabel;
+
     uint8_t *delay;
+    BOOL *shouldUpdateImage;
     CGPoint startingPoint;
     BOOL isVisible;
 }
 
-@property (nonatomic,retain) UIImage *weaponsImage;
-@property (nonatomic,retain) NSArray *buttonsArray;
+@property (retain) NSArray *buttonsArray;
+@property (retain) NSArray *imagesArray;
+@property (nonatomic,retain) UILabel *nameLabel;
+@property (nonatomic,retain) UILabel *extraLabel;
+@property (nonatomic,retain) UILabel *captionLabel;
 @property (assign) BOOL isVisible;
 
 -(void) buttonPressed:(id)sender;
--- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m	Tue Oct 19 19:47:17 2010 -0400
@@ -28,7 +28,7 @@
 #define BTNS_PER_ROW 9
 
 @implementation AmmoMenuViewController
-@synthesize weaponsImage, buttonsArray, isVisible;
+@synthesize imagesArray, buttonsArray, nameLabel, extraLabel, captionLabel, isVisible;
 
 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
     return rotationManager(interfaceOrientation);
@@ -51,9 +51,11 @@
     self.view.autoresizingMask = UIViewAutoresizingNone;
     
     self.isVisible = NO;
-    delay = (uint8_t *) calloc(HW_getNumberOfWeapons(), sizeof(uint8_t));
+    delay = (uint8_t *)calloc(HW_getNumberOfWeapons(), sizeof(uint8_t));
     HW_getAmmoDelays(delay);
 
+    shouldUpdateImage = (BOOL *)calloc(HW_getNumberOfWeapons(), sizeof(BOOL));
+
     [super viewDidLoad];
 }
 
@@ -85,14 +87,45 @@
 
 #pragma mark -
 #pragma mark drawing
+-(void) prepareLabels {
+    int x = 12;
+    int y = (HW_getNumberOfWeapons()/BTNS_PER_ROW)*44 + 18;
+    UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 200, 20)];
+    name.backgroundColor = [UIColor clearColor];
+    name.textColor = UICOLOR_HW_YELLOW_BODER;
+    name.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]];
+    self.nameLabel = name;
+    [self.view addSubview:self.nameLabel];
+    [name release];
+
+    UILabel *caption = [[UILabel alloc] initWithFrame:CGRectMake(x+200, y, 220, 20)];
+    caption.backgroundColor = [UIColor clearColor];
+    caption.textColor = [UIColor whiteColor];
+    caption.font = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
+    caption.adjustsFontSizeToFitWidth = YES;
+    caption.minimumFontSize = 8;
+    self.captionLabel = caption;
+    [self.view addSubview:self.captionLabel];
+    [caption release];
+
+    UILabel *description = [[UILabel alloc] initWithFrame:CGRectMake(x+2, y+20, 410, 53)];
+    description.backgroundColor = [UIColor clearColor];
+    description.textColor = [UIColor whiteColor];
+    description.font = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
+    description.adjustsFontSizeToFitWidth = YES;
+    description.minimumFontSize = 8;
+    description.numberOfLines = 0;
+    self.extraLabel = description;
+    [self.view addSubview:self.extraLabel];
+    [description release];
+}
+
 -(void) loadAmmoStuff:(id) object {
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
     NSString *str = [NSString stringWithFormat:@"%@/AmmoMenu/Ammos.png",GRAPHICS_DIRECTORY()];
     UIImage *ammoStoreImage = [[UIImage alloc] initWithContentsOfFile:str];
-    [self performSelectorOnMainThread:@selector(setWeaponsImage:) withObject:ammoStoreImage waitUntilDone:NO];
-    [ammoStoreImage release];
 
+    NSMutableArray *imgs = [[NSMutableArray alloc] initWithCapacity:HW_getNumberOfWeapons()];
     NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:HW_getNumberOfWeapons()];
     int i, j, e;
     for (i = 0, j = 0, e = 0; i < HW_getNumberOfWeapons(); i++) {
@@ -122,7 +155,9 @@
         button.layer.borderWidth = w;
         [button.layer setCornerRadius:radius];
         [button.layer setMasksToBounds:YES];
-        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
+        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
+        [button addTarget:self action:@selector(buttonReleased:) forControlEvents:UIControlEventTouchUpInside];
+        [button addTarget:self action:@selector(buttonCancel:) forControlEvents:UIControlEventTouchUpOutside|UIControlEventTouchCancel];
         [button setTitleColor:UICOLOR_HW_YELLOW_TEXT forState:UIControlStateNormal];
         button.titleLabel.backgroundColor = [UIColor blackColor];
         button.titleLabel.font = [UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]];
@@ -132,19 +167,27 @@
         button.titleLabel.layer.borderWidth = 1;
         [self.view addSubview:button];
         [array addObject:button];
-        
+
+        int x_src = ((i*32)/(int)ammoStoreImage.size.height)*32;
+        int y_src = (i*32)%(int)ammoStoreImage.size.height;
+        UIImage *img = [ammoStoreImage cutAt:CGRectMake(x_src, y_src, 32, 32)];
+        [imgs addObject:img];
     }
     [self performSelectorOnMainThread:@selector(setButtonsArray:) withObject:array waitUntilDone:NO];
     [array release];
-    
-    [self performSelectorOnMainThread:@selector(updateAmmoVisuals) withObject:nil waitUntilDone:NO];
+
+    [self performSelectorOnMainThread:@selector(setImagesArray:) withObject:imgs waitUntilDone:NO];
+    [imgs release];
+    [ammoStoreImage release];
+
+    [self performSelectorOnMainThread:@selector(updateAmmoVisuals) withObject:nil waitUntilDone:YES];
     UIActivityIndicatorView *spinner = (UIActivityIndicatorView *)object;
     [spinner stopAnimating];
     [pool drain];
 }
 
 -(void) updateAmmoVisuals {
-    if (self.buttonsArray == nil || self.weaponsImage == nil) {
+    if (self.buttonsArray == nil || self.imagesArray == nil) {
         UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
         spinner.hidesWhenStopped = YES;
         spinner.center = self.view.center;
@@ -155,11 +198,6 @@
         return;
     }
     
-    [NSThread detachNewThreadSelector:@selector(drawingThread) toTarget:self withObject:nil];
-}
-
--(void) drawingThread {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     int *loadout = (int *)calloc(HW_getNumberOfWeapons(), sizeof(int));
     int res = HW_getAmmoCounts(loadout);
     int turns = HW_getTurnsForCurrentTeam();
@@ -173,22 +211,18 @@
                 if (delay[i]-turns >= 0) {
                     button.layer.borderColor = [[UIColor lightGrayColor] CGColor];
                     [button setTitle:[NSString stringWithFormat:@" %d ",delay[i]-turns+1] forState:UIControlStateNormal];
-                    if (button.currentBackgroundImage == nil) {
-                        int x_src = ((i*32)/(int)self.weaponsImage.size.height)*32;
-                        int y_src = (i*32)%(int)self.weaponsImage.size.height;
-                        UIImage *img = [self.weaponsImage cutAt:CGRectMake(x_src, y_src, 32, 32)];
+                    if (button.currentBackgroundImage == nil || shouldUpdateImage[i] == NO) {
+                        UIImage *img = [self.imagesArray objectAtIndex:i];
                         [button setBackgroundImage:[img convertToGrayScale] forState:UIControlStateNormal];
-                        button.imageView.tag = 10000;
+                        shouldUpdateImage[i] = YES;
                     }
                 } else {
                     button.layer.borderColor = [UICOLOR_HW_YELLOW_TEXT CGColor];
-                    [button setTitle:@"" forState:UIControlStateNormal];
-                    if (button.currentBackgroundImage == nil || button.imageView.tag == 10000) {
-                        int x_src = ((i*32)/(int)self.weaponsImage.size.height)*32;
-                        int y_src = (i*32)%(int)self.weaponsImage.size.height;
-                        UIImage *img = [self.weaponsImage cutAt:CGRectMake(x_src, y_src, 32, 32)];
+                    [button setTitle:nil forState:UIControlStateNormal];
+                    if (button.currentBackgroundImage == nil || shouldUpdateImage[i] == YES) {
+                        UIImage *img = [self.imagesArray objectAtIndex:i];
                         [button setBackgroundImage:img forState:UIControlStateNormal];
-                        button.imageView.tag = 0;
+                        shouldUpdateImage[i] = NO;
                     }
                 }
                 button.enabled = YES;
@@ -197,8 +231,8 @@
                     [button setBackgroundImage:nil forState:UIControlStateNormal];
                 button.layer.borderColor = [[UIColor darkGrayColor] CGColor];
                 button.enabled = NO;
+                shouldUpdateImage[i] = NO;
             }
-            
         }
     } else {
         self.view.userInteractionEnabled = NO;
@@ -206,15 +240,46 @@
 
     free(loadout);
     loadout = NULL;
-    [pool drain];
 }
 
 #pragma mark -
 #pragma mark user interaction
 -(void) buttonPressed:(id) sender {
     UIButton *theButton = (UIButton *)sender;
-    HW_setWeapon(theButton.tag);
-    playSound(@"clickSound");
+    if (self.nameLabel == nil || self.extraLabel == nil)
+        [self prepareLabels];
+
+    self.nameLabel.text = [NSString stringWithUTF8String:HW_getWeaponNameByIndex(theButton.tag)];
+    // description contains a lot of unnecessary stuff, we clean it by removing .|, !| and ?|
+    NSString *description = [NSString stringWithUTF8String:HW_getWeaponDescriptionByIndex(theButton.tag)];
+    NSArray *elements = [description componentsSeparatedByString:@".|"];
+    NSArray *purgedElements = [[elements objectAtIndex:0] componentsSeparatedByString:@"!|"];
+    NSArray *morePurgedElements = [[purgedElements objectAtIndex:0] componentsSeparatedByString:@"?|"];
+    self.extraLabel.text = [[[morePurgedElements objectAtIndex:0] stringByReplacingOccurrencesOfString:@"|" withString:@" "] stringByAppendingString:@"."];
+    if (theButton.currentTitle != nil)
+        self.captionLabel.text = NSLocalizedString(@"This weapon is locked",@"");
+    else
+        self.captionLabel.text = [NSString stringWithUTF8String:HW_getWeaponCaptionByIndex(theButton.tag)];
+}
+
+-(void) buttonCancel:(id) sender {
+    self.nameLabel.text = nil;
+    self.extraLabel.text = nil;
+    self.captionLabel.text = nil;
+}
+
+-(void) buttonReleased:(id) sender {
+    UIButton *theButton = (UIButton *)sender;
+    if (self.nameLabel == nil || self.extraLabel == nil)
+        [self prepareLabels];
+
+    self.nameLabel.text = nil;
+    self.extraLabel.text = nil;
+    self.captionLabel.text = nil;
+    if (theButton.currentTitle == nil) {
+        HW_setWeapon(theButton.tag);
+        playSound(@"clickSound");
+    }
     if (IS_DUALHEAD() == NO)
         [self disappear];
 }
@@ -257,24 +322,35 @@
 #pragma mark -
 #pragma mark memory
 -(void) didReceiveMemoryWarning {
-    self.weaponsImage = nil;
+    self.imagesArray = nil;
     self.buttonsArray = nil;
+    self.nameLabel = nil;
+    self.extraLabel = nil;
+    self.captionLabel = nil;
     MSG_MEMCLEAN();
     [super didReceiveMemoryWarning];
 }
 
 -(void) viewDidUnload {
     [[NSNotificationCenter defaultCenter] removeObserver:self];
-    self.weaponsImage = nil;
+    self.imagesArray = nil;
     self.buttonsArray = nil;
+    self.nameLabel = nil;
+    self.extraLabel = nil;
+    self.captionLabel = nil;
     free(delay);
     delay = NULL;
+    free(shouldUpdateImage);
+    shouldUpdateImage = NULL;
     MSG_DIDUNLOAD();
     [super viewDidUnload];
 }
 
 -(void) dealloc {
-    [weaponsImage release];
+    [nameLabel release];
+    [extraLabel release];
+    [captionLabel release];
+    [imagesArray release];
     [buttonsArray release];
     [super dealloc];
 }
--- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.h	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.h	Tue Oct 19 19:47:17 2010 -0400
@@ -50,6 +50,7 @@
 #define UICOLOR_HW_YELLOW_BODER [UIColor colorWithRed:(CGFloat)0xFE/255 green:(CGFloat)0xC0/255 blue:0 alpha:1]
 #define UICOLOR_HW_YELLOW_TEXT  [UIColor colorWithRed:(CGFloat)0xF0/255 green:(CGFloat)0xD0/255 blue:0 alpha:1]
 #define UICOLOR_HW_DARKBLUE     [UIColor colorWithRed:(CGFloat)0x0F/255 green:0 blue:(CGFloat)0x42/255 alpha:1]
+#define UICOLOR_HW_ALPHABLUE    [UIColor colorWithRed:(CGFloat)0x0F/255 green:0 blue:(CGFloat)0x42/255 alpha:0.58f]
 
 #define IS_DUALHEAD()           ([[UIScreen screens] count] > 1)
 
@@ -67,3 +68,5 @@
 NSInteger randomPort (void);
 NSString *modelType (void);
 NSArray *getAvailableColors (void);
+UILabel *createBlueLabel (NSString *title, CGRect frame);
+UILabel *createLabelWithParams (NSString *title, CGRect frame, CGFloat borderWidth, UIColor *borderColor, UIColor *backgroundColor);
--- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.m	Tue Oct 19 19:47:17 2010 -0400
@@ -24,6 +24,7 @@
 #import <sys/sysctl.h>
 #import <mach/mach.h>
 #import <mach/mach_host.h>
+#import <QuartzCore/QuartzCore.h>
 #import "AudioToolbox/AudioToolbox.h"
 #import "PascalImports.h"
 
@@ -74,45 +75,45 @@
     switch (type) {
         case 0: //default
             theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys:
-                         @"9391929422199121032235111001201000000211110101011",@"ammostore_initialqt",
-                         @"0405040541600655546554464776576666666155510101117",@"ammostore_probability",
+                         @"9391929422199121032235111001201000000211110101010",@"ammostore_initialqt",
+                         @"0405040541600655546554464776576666666155510101110",@"ammostore_probability",
                          @"0000000000000205500000040007004000000000200000000",@"ammostore_delay",
-                         @"1311110312111111123114111111111111111211111101111",@"ammostore_crate", nil];
+                         @"1311110312111111123114111111111111111211111101110",@"ammostore_crate", nil];
             break;
         case 1: //crazy
             theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys:
-                         @"9999999999999999992999999999999999299999999909999",@"ammostore_initialqt",
-                         @"1111110111111111111111111111111111111111111101111",@"ammostore_probability",
+                         @"9999999999999999992999999999999999299999999909990",@"ammostore_initialqt",
+                         @"1111110111111111111111111111111111111111111101110",@"ammostore_probability",
                          @"0000000000000000000000000000000000000000000000000",@"ammostore_delay",
-                         @"1311110312111111123114111111111111111211110101111",@"ammostore_crate", nil];
+                         @"1311110312111111123114111111111111111211110101110",@"ammostore_crate", nil];
             break;
         case 2: //pro mode
             theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys:
                          @"9090009000000000000009000000000000000000000000000",@"ammostore_initialqt",
                          @"0000000000000000000000000000000000000000000000000",@"ammostore_probability",
                          @"0000000000000205500000040007004000000000200000000",@"ammostore_delay",
-                         @"1111111111111111111111111111111111111111100101111",@"ammostore_crate", nil];
+                         @"1111111111111111111111111111111111111111100101110",@"ammostore_crate", nil];
             break;
         case 3: //shoppa
             theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys:
                          @"0000009900000000000000000000000000000000000000000",@"ammostore_initialqt",
                          @"4444410044244402210112121222422000000002000400010",@"ammostore_probability",
                          @"0000000000000000000000000000000000000000000000000",@"ammostore_delay",
-                         @"1111111111111111111111111111111111111111101101111",@"ammostore_crate", nil];
+                         @"1111111111111111111111111111111111111111101101110",@"ammostore_crate", nil];
             break;
         case 4: //basketball
             theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys:
                          @"9391929422199121032235111001201000000211110101000",@"ammostore_initialqt",
                          @"0000000000000000000000000000000000000000000000000",@"ammostore_probability",
                          @"0000000000000005500000040007004000000000200000000",@"ammostore_delay",
-                         @"1111111111111111111111111111111111111111111101111",@"ammostore_crate", nil];
+                         @"1111111111111111111111111111111111111111111101110",@"ammostore_crate", nil];
             break;
         case 5: //minefield
             theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys:
                          @"0000009900090000000300000000000000000000000000000",@"ammostore_initialqt",
                          @"0000000000000000000000000000000000000000000000000",@"ammostore_probability",
                          @"0000000000000205500000040007004000000000200000000",@"ammostore_delay",
-                         @"1111111111111111111111111111111111111111111101111",@"ammostore_crate", nil];
+                         @"1111111111111111111111111111111111111111111101110",@"ammostore_crate", nil];
             break;
         default:
             NSLog(@"Nope");
@@ -260,7 +261,7 @@
     AudioServicesPlaySystemSound(soundID);
 }
 
-NSArray inline *getAvailableColors(void) {
+NSArray inline *getAvailableColors (void) {
     return [NSArray arrayWithObjects:[NSNumber numberWithUnsignedInt:0x4376e9],     // bluette
                                      [NSNumber numberWithUnsignedInt:0x3e9321],     // greeeen
                                      [NSNumber numberWithUnsignedInt:0xa23dbb],     // violett
@@ -271,3 +272,26 @@
                                      [NSNumber numberWithUnsignedInt:0x3da2bb],     // cyannnn  
                                      nil];
 }
+
+UILabel *createBlueLabel (NSString *title, CGRect frame) {
+    return createLabelWithParams(title, frame, 1.5f, UICOLOR_HW_YELLOW_BODER, UICOLOR_HW_DARKBLUE);
+}
+
+UILabel *createLabelWithParams (NSString *title, CGRect frame, CGFloat borderWidth, UIColor *borderColor, UIColor *backgroundColor) {
+    UILabel *theLabel = [[UILabel alloc] initWithFrame:frame];
+    theLabel.backgroundColor = backgroundColor;
+
+    if (title != nil) {
+        theLabel.text = title;
+        theLabel.textColor = UICOLOR_HW_YELLOW_TEXT;
+        theLabel.textAlignment = UITextAlignmentCenter;
+        theLabel.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]*80/100];
+    }
+    
+    [theLabel.layer setBorderWidth:borderWidth];
+    [theLabel.layer setBorderColor:borderColor.CGColor];
+    [theLabel.layer setCornerRadius:8.0f];
+    [theLabel.layer setMasksToBounds:YES];
+    
+    return theLabel;
+}
--- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.m	Tue Oct 19 19:47:17 2010 -0400
@@ -256,7 +256,7 @@
         [self.imgContainer removeFromSuperview];
     
     self.imgContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 40)];
-    for (int i = 0; i < 1 + random()%40; i++) {
+    for (int i = 0; i < 1 + random()%20; i++) {
         NSString *hat = [hatArray objectAtIndex:random()%numberOfHats];
         
         NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", HATS_DIRECTORY(), hat];
@@ -266,7 +266,10 @@
         [hatSprite release];
         
         UIImageView *hog = [[UIImageView alloc] initWithImage:hogWithHat];
-        hog.frame = CGRectMake(10*(i+1)+random()%30, 30, 32, 32);
+        int x = 15*(i+1)+random()%40;
+        if (x + 32 > 300)
+            x = i*10;
+        hog.frame = CGRectMake(x, 30, 32, 32);
         [self.imgContainer addSubview:hog];
         [hog release];
     }
@@ -287,10 +290,37 @@
                                                      name:@"buttonPressed"
                                                    object:nil];
         srandom(time(NULL));
-        
+
         // load other controllers
         if (self.mapConfigViewController == nil)
             self.mapConfigViewController = [[MapConfigViewController alloc] initWithNibName:@"MapConfigViewController-iPad" bundle:nil];
+
+        UILabel *leftBackground = createLabelWithParams(nil, CGRectMake(0, 60, 320, 620), 2.7f, UICOLOR_HW_YELLOW_BODER, UICOLOR_HW_ALPHABLUE);
+        [self.mapConfigViewController.view addSubview:leftBackground];
+        [leftBackground release];
+        UILabel *middleBackground = createLabelWithParams(nil, CGRectMake(337, 187, 350, 505), 2.7f, UICOLOR_HW_YELLOW_BODER, UICOLOR_HW_ALPHABLUE);
+        [self.mapConfigViewController.view addSubview:middleBackground];
+        [middleBackground release];
+        UILabel *rightBackground = createLabelWithParams(nil, CGRectMake(704, 214, 320, 464), 2.7f, UICOLOR_HW_YELLOW_BODER, UICOLOR_HW_ALPHABLUE);
+        [self.mapConfigViewController.view addSubview:rightBackground];
+        [rightBackground release];
+        UILabel *topBackground = createLabelWithParams(nil, CGRectMake(714, 14, 300, 190), 2.3f, UICOLOR_HW_YELLOW_BODER, UICOLOR_HW_ALPHABLUE);
+        [self.mapConfigViewController.view addSubview:topBackground];
+        [topBackground release];
+        UILabel *bottomLeftBackground = createLabelWithParams(nil, CGRectMake(106, 714, 320, 40), 2.0f, UICOLOR_HW_YELLOW_BODER, UICOLOR_HW_ALPHABLUE);
+        [self.mapConfigViewController.view addSubview:bottomLeftBackground];
+        [bottomLeftBackground release];
+        UILabel *bottomRightBackground = createLabelWithParams(NSLocalizedString(@"Max Hogs:                 ",@""), CGRectMake(594, 714, 320, 40), 2.0f, UICOLOR_HW_YELLOW_BODER, UICOLOR_HW_ALPHABLUE);
+        bottomRightBackground.font = [UIFont italicSystemFontOfSize:[UIFont labelFontSize]];
+        [self.mapConfigViewController.view addSubview:bottomRightBackground];
+        [bottomRightBackground release];
+        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.maxLabel];
+        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.sizeLabel];
+        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.segmentedControl];
+        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.previewButton];
+        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.slider];
+        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.tableView];
+
         if (self.teamConfigViewController == nil)
             self.teamConfigViewController = [[TeamConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
         [self.mapConfigViewController.view addSubview:self.teamConfigViewController.view];
@@ -300,7 +330,7 @@
         self.mapConfigViewController.view.frame = CGRectMake(0, 0, screen.size.height, screen.size.width);
         self.teamConfigViewController.view.frame = CGRectMake(348, 200, 328, 480);
         self.schemeWeaponConfigViewController.view.frame = CGRectMake(10, 70, 300, 600);
-        
+
     } else {
         // this is the visible controller
         if (self.mapConfigViewController == nil)
@@ -348,16 +378,15 @@
 }
 
 -(void) didReceiveMemoryWarning {
-    if (self.mapConfigViewController.view.superview == nil)
-        self.mapConfigViewController = nil;
     if (self.teamConfigViewController.view.superview == nil)
         self.teamConfigViewController = nil;
     if (self.schemeWeaponConfigViewController.view.superview == nil)
         self.schemeWeaponConfigViewController = nil;
     if (self.helpPage.view.superview == nil)
         self.helpPage = nil;
+    if (self.mapConfigViewController.view.superview == nil)
+        self.mapConfigViewController = nil;
 
-    // Release any cached data, images, etc that aren't in use.
     self.imgContainer = nil;
     MSG_MEMCLEAN();
     [super didReceiveMemoryWarning];
--- a/project_files/HedgewarsMobile/Classes/GameSetup.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/GameSetup.m	Tue Oct 19 19:47:17 2010 -0400
@@ -52,7 +52,7 @@
         // if path is empty it means that you have to create a new file, otherwise read from that file
         if ([path isEqualToString:@""] == YES) {
             NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
-            [outputFormatter setDateFormat:@"yyyy.MM.dd '@' HH-mm"];
+            [outputFormatter setDateFormat:@"yyyy-MM-dd '@' HH.mm"];
             NSString *newDateString = [outputFormatter stringFromDate:[NSDate date]];
             self.savePath = [SAVES_DIRECTORY() stringByAppendingFormat:@"%@.hws", newDateString];
             [outputFormatter release];
@@ -416,8 +416,7 @@
             case 'q':
                 // game ended, can remove the savefile
                 [[NSFileManager defaultManager] removeItemAtPath:self.savePath error:nil];
-                // so update the relative viewcontroler and the overlay
-                [[NSNotificationCenter defaultCenter] postNotificationName:@"removedSave" object:nil];
+                //[[NSNotificationCenter defaultCenter] postNotificationName:@"removedSave" object:nil];
                 // and remove + disable the overlay
                 [[NSNotificationCenter defaultCenter] postNotificationName:@"remove overlay" object:nil];
                 setGameRunning(NO);
@@ -461,7 +460,6 @@
             rotation = @"-90";
         else
             rotation = @"90";
-
     }
         
     NSString *horizontalSize = [[NSString alloc] initWithFormat:@"%d", width];
--- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.m	Tue Oct 19 19:47:17 2010 -0400
@@ -467,7 +467,7 @@
 
 -(void) didReceiveMemoryWarning {
     self.dataSourceArray = nil;
-    self.lastIndexPath = nil;
+    //self.lastIndexPath = nil;
 
     MSG_MEMCLEAN();
     [super didReceiveMemoryWarning];
--- a/project_files/HedgewarsMobile/Classes/OverlayViewController.h	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.h	Tue Oct 19 19:47:17 2010 -0400
@@ -40,6 +40,7 @@
 
     // the objc ammomenu
     AmmoMenuViewController *amvc;
+    BOOL wasVisible;
     
     // ths touch section
     CGFloat initialDistanceForPinching;
@@ -53,6 +54,7 @@
     
     // dual head support
     NSInteger initialScreenCount;
+    NSInteger a, b;
 }
 
 @property (nonatomic,retain) id popoverController;
--- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m	Tue Oct 19 19:47:17 2010 -0400
@@ -45,68 +45,104 @@
 @implementation OverlayViewController
 @synthesize popoverController, popupMenu, helpPage, amvc, isNetGame, useClassicMenu;
 
+#pragma mark -
+#pragma mark rotation
 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
     return rotationManager(interfaceOrientation);
 }
 
+// pause the game and remove objc menus so that animation is smoother
+-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation) toInterfaceOrientation duration:(NSTimeInterval) duration{
+    [self dismissPopover];
+    if (HW_isPaused() == NO)
+        HW_pause();
+    if (self.amvc.isVisible && IS_DUALHEAD() == NO) {
+        [self.amvc disappear];
+        wasVisible = YES;
+    } else
+        wasVisible = NO;
+
+    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
+}
+
+// now restore previous state
+-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation {
+    if (wasVisible || IS_DUALHEAD())
+        [self.amvc appearInView:self.view];
+    if (HW_isPaused() == YES)
+        HW_pause();
+
+    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
+}
+
+// rotate the sdl view according to the orientation -- the uiview is autorotated
 -(void) didRotate:(NSNotification *)notification {
     UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
-    CGRect rect = [[UIScreen mainScreen] bounds];
-    CGRect usefulRect = CGRectMake(0, 0, rect.size.width, rect.size.height);
     UIView *sdlView = [[[UIApplication sharedApplication] keyWindow] viewWithTag:SDL_VIEW_TAG];
-
+    CGRect screenRect = [[UIScreen mainScreen] bounds];
+    
     [UIView beginAnimations:@"rotation" context:NULL];
-    [UIView setAnimationDuration:0.8f];
-    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
+    [UIView setAnimationDuration:0.7];
     switch (orientation) {
         case UIDeviceOrientationLandscapeLeft:
-            if (IS_DUALHEAD() == NO)
-                sdlView.transform = CGAffineTransformMakeRotation(degreesToRadians(180));
-            self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
+            if (IS_DUALHEAD()) {
+                self.view.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);
+                self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
+            } else
+                sdlView.transform = CGAffineTransformMakeRotation(degreesToRadians(a));
             break;
         case UIDeviceOrientationLandscapeRight:
-            if (IS_DUALHEAD() == NO)
-                sdlView.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
-            self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
-            break;
-        case UIDeviceOrientationPortrait:
-            if (IS_DUALHEAD())
-                self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
-            break;
-        case UIDeviceOrientationPortraitUpsideDown:
-            if (IS_DUALHEAD())
-                self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(180));
+            if (IS_DUALHEAD()) {
+                self.view.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);
+                self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
+            } else
+                sdlView.transform = CGAffineTransformMakeRotation(degreesToRadians(b));
             break;
         default:
             // a debug log would spam too much
             break;
     }
-    if (self.amvc.isVisible)
-        [self.amvc appearInView:self.view];
-    self.view.frame = usefulRect;
     [UIView commitAnimations];
-    
+
     // for single screens only landscape mode is supported
     // for dual screen mode the sdlview is not modified, but you can rotate the pad in any direction
 }
 
 #pragma mark -
 #pragma mark View Management
+-(id) initWithCoder:(NSCoder *)aDecoder {
+    if ((self = [super initWithCoder:aDecoder])) {
+        isGameRunning = NO;
+        isReplay = NO;
+        cachedGrenadeTime = 2;
+
+        isAttacking = NO;
+        wasVisible = NO;
+        isPopoverVisible = NO;    // it is called "popover" even on the iphone
+    }
+    return self;
+}
+
 -(void) viewDidLoad {
-    isGameRunning = NO;
-    isReplay = NO;
-    cachedGrenadeTime = 2;
-    isAttacking = NO;
-    
-    // i called it a popover even on the iphone
-    isPopoverVisible = NO;
+    CGRect screenRect = [[UIScreen mainScreen] bounds];
+    self.view.frame = CGRectMake(0, 0, screenRect.size.height, screenRect.size.width);
+    self.view.center = CGPointMake(self.view.frame.size.height/2, self.view.frame.size.width/2);
     self.view.alpha = 0;
-    self.view.center = CGPointMake(self.view.frame.size.height/2.0, self.view.frame.size.width/2.0);
 
+    // detrmine the quanitiy and direction of the rotation
+    if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
+        a = 180;
+        b = 0;
+    } else {
+        a = 0;
+        b = 180;
+    }
+
+    // get the number of screens to know the previous state whan a display is connected or detached
     initialScreenCount = [[UIScreen screens] count];
 
+    // set initial orientation of the controller orientation
     if (IS_DUALHEAD()) {
-        // set initial orientation wrt the controller orientation
         switch (self.interfaceOrientation) {
             case UIDeviceOrientationLandscapeLeft:
                 self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
@@ -114,30 +150,23 @@
             case UIDeviceOrientationLandscapeRight:
                 self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
                 break;
-            case UIDeviceOrientationPortrait:
-                self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
-                break;
-            case UIDeviceOrientationPortraitUpsideDown:
-                self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(180));
-                break;
             default:
                 DLog(@"Nope");
                 break;
         }
     }
-    CGRect screenRect = [[UIScreen mainScreen] bounds];
-    self.view.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);
 
+    // the timer used to dim the overlay
     dimTimer = [[NSTimer alloc] initWithFireDate:(IS_DUALHEAD()) ? HIDING_TIME_NEVER : [NSDate dateWithTimeIntervalSinceNow:6]
                                         interval:1000
                                           target:self
                                         selector:@selector(dimOverlay)
                                         userInfo:nil
                                          repeats:YES];
-
     // add timer to runloop, otherwise it doesn't work
     [[NSRunLoop currentRunLoop] addTimer:dimTimer forMode:NSDefaultRunLoopMode];
 
+    // become listener of some notifications
     [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
     [[NSNotificationCenter defaultCenter] addObserver:self
                                              selector:@selector(didRotate:)
@@ -163,7 +192,8 @@
                                              selector:@selector(numberOfScreensDecreased)
                                                  name:UIScreenDidDisconnectNotification
                                                object:nil];
-    
+
+    // present the overlay
     [UIView beginAnimations:@"showing overlay" context:NULL];
     [UIView setAnimationDuration:1];
     self.view.alpha = 1;
@@ -209,6 +239,12 @@
     doNotDim();
 }
 
+-(void) cleanup {
+    [self dismissPopover];
+    HW_terminate(NO);
+    [self.view removeFromSuperview];
+}
+
 -(void) didReceiveMemoryWarning {
     if (self.popupMenu.view.superview == nil)
         self.popupMenu = nil;
@@ -227,6 +263,9 @@
 -(void) viewDidUnload {
     // only objects initialized in viewDidLoad should be here
     [[NSNotificationCenter defaultCenter] removeObserver:self];
+    [NSObject cancelPreviousPerformRequestsWithTarget:self
+                                             selector:@selector(unsetPreciseStatus)
+                                               object:nil];
     dimTimer = nil;
     self.helpPage = nil;
     [self dismissPopover];
@@ -245,14 +284,8 @@
     [super dealloc];
 }
 
--(void) cleanup {
-    [self dismissPopover];
-    HW_terminate(NO);
-    [self.view removeFromSuperview];
-}
-
 #pragma mark -
-#pragma mark Overlay actions and members
+#pragma mark overlay user interaction
 // nice transition for dimming, should be called only by the timer himself
 -(void) dimOverlay {
     if (isGameRunning) {
@@ -381,6 +414,22 @@
     HW_preciseSet(NO);
 }
 
+-(void) sendHWClick {
+    HW_click();
+    removeConfirmationInput();
+    doDim();
+}
+
+-(void) setGrenadeTime:(id) sender {
+    UISegmentedControl *theSegment = (UISegmentedControl *)sender;
+    if (cachedGrenadeTime != theSegment.selectedSegmentIndex) {
+        HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1);
+        cachedGrenadeTime = theSegment.selectedSegmentIndex;
+    }
+}
+
+#pragma mark -
+#pragma mark other menu
 // present a further check before closing game
 -(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger) buttonIndex {
     if ([actionSheet cancelButtonIndex] != buttonIndex)
@@ -475,8 +524,6 @@
     }
 }
 
-    //if (currentPosition.y < screen.size.width - 130 || (currentPosition.x > 130 && currentPosition.x < screen.size.height - 130)) {
-
 -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
     CGRect screen = [[UIScreen mainScreen] bounds];
     NSSet *allTouches = [event allTouches];
@@ -564,20 +611,6 @@
     initialDistanceForPinching = 0;
 }
 
--(void) sendHWClick {
-    HW_click();
-    removeConfirmationInput();
-    doDim();
-}
-
--(void) setGrenadeTime:(id) sender {
-    UISegmentedControl *theSegment = (UISegmentedControl *)sender;
-    if (cachedGrenadeTime != theSegment.selectedSegmentIndex) {
-        HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1);
-        cachedGrenadeTime = theSegment.selectedSegmentIndex;
-    }
-}
-
 -(void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
     [self touchesEnded:touches withEvent:event];
 }
@@ -642,7 +675,7 @@
 }
 
 #pragma mark -
-#pragma mark Functions called by pascal
+#pragma mark Functions called by pascal code
 void inline setGameRunning(BOOL value) {
     isGameRunning = value;
 }
--- a/project_files/HedgewarsMobile/Classes/PascalImports.h	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/PascalImports.h	Tue Oct 19 19:47:17 2010 -0400
@@ -84,6 +84,8 @@
     void HW_setWeapon(int whichone);
     BOOL HW_isWeaponAnEffect(int whichone);
     char *HW_getWeaponNameByIndex(int whichone);
+    char *HW_getWeaponCaptionByIndex(int whichone);
+    char *HW_getWeaponDescriptionByIndex(int whichone);
 
     void HW_getAmmoDelays(unsigned char *pointer);
     int  HW_getAmmoCounts(int *pointer);
--- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m	Tue Oct 19 19:47:17 2010 -0400
@@ -41,16 +41,12 @@
 
 -(void) viewDidLoad {
     self.tableView.backgroundView = nil;
-    [[NSNotificationCenter defaultCenter] addObserver:self
-                                             selector:@selector(viewWillAppear:)
-                                                 name:@"removedSave"
-                                               object:nil];
     [super viewDidLoad];
 }
 
 -(void) viewWillAppear:(BOOL)animated {
+    [self updateTable];
     [super viewWillAppear:animated];
-    [self updateTable];
 }
 
 #pragma mark -
@@ -198,11 +194,12 @@
     NSString *filePath = [NSString stringWithFormat:@"%@/%@",SAVES_DIRECTORY(),[self.listOfSavegames objectAtIndex:[indexPath row]]];
     
     NSDictionary *allDataNecessary = [NSDictionary dictionaryWithObjectsAndKeys:
-                                      [NSDictionary dictionary],@"game_dictionary",
                                       filePath,@"savefile",
                                       [NSNumber numberWithBool:NO],@"netgame",
+                                      [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:self.interfaceOrientation] forKey:@"orientation"],@"game_dictionary",
                                       nil];
     [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary];
+    [self.parentViewController dismissModalViewControllerAnimated:NO];
 }
 
 #pragma mark -
--- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m	Tue Oct 19 19:47:17 2010 -0400
@@ -20,7 +20,6 @@
 
 
 #import "SchemeWeaponConfigViewController.h"
-#import <QuartzCore/QuartzCore.h>
 #import "CommodityFunctions.h"
 #import "SDL_uikitappdelegate.h"
 
@@ -127,22 +126,14 @@
 }
 
 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
-    UILabel *theLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width * 80/100, 30)];
-    theLabel.backgroundColor = [UIColor blueColor];
+    CGRect frame = CGRectMake(0, 0, self.view.frame.size.width * 80/100, 30);
+    NSString *text;
     if (section == 0) 
-        theLabel.text = NSLocalizedString(@"Schemes",@"");
+        text = NSLocalizedString(@"Schemes",@"");
     else
-        theLabel.text = NSLocalizedString(@"Weapons",@"");
+        text = NSLocalizedString(@"Weapons",@"");
+    UILabel *theLabel = createBlueLabel(text, frame);
     theLabel.center = CGPointMake(self.view.frame.size.width/2, 20);
-    theLabel.textColor = UICOLOR_HW_YELLOW_TEXT;
-    theLabel.textAlignment = UITextAlignmentCenter;
-    theLabel.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]*80/100];
-    theLabel.backgroundColor = UICOLOR_HW_DARKBLUE;
-    
-    [theLabel.layer setBorderWidth:1.5f];
-    [theLabel.layer setBorderColor:[UICOLOR_HW_YELLOW_BODER CGColor]];
-    [theLabel.layer setCornerRadius:8.0f];
-    [theLabel.layer setMasksToBounds:YES];
 
     UIView *theView = [[[UIView alloc] init] autorelease];
     [theView addSubview:theLabel];
@@ -150,16 +141,6 @@
     return theView;
 }
 
-/*
--(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger) section {
-    if (section == 0) {
-        return NSLocalizedString(@"Schemes",@"");
-    } else {
-        return NSLocalizedString(@"Weapons",@"");;
-    }
-}
-*/
-
 #pragma mark -
 #pragma mark Table view delegate
 -(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
--- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m	Tue Oct 19 19:47:17 2010 -0400
@@ -20,7 +20,6 @@
 
 
 #import "TeamConfigViewController.h"
-#import <QuartzCore/QuartzCore.h>
 #import "CommodityFunctions.h"
 #import "HogButtonView.h"
 #import "SquareButtonView.h"
@@ -172,22 +171,14 @@
 }
 
 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
-    UILabel *theLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width * 80/100, 30)];
-    theLabel.backgroundColor = [UIColor blueColor];
+    CGRect frame = CGRectMake(0, 0, self.view.frame.size.width * 80/100, 30);
+    NSString *text;
     if (section == 0) 
-        theLabel.text = NSLocalizedString(@"Playing Teams",@"");
+        text = NSLocalizedString(@"Playing Teams",@"");
     else
-        theLabel.text = NSLocalizedString(@"Available Teams",@"");
+        text = NSLocalizedString(@"Available Teams",@"");
+    UILabel *theLabel = createBlueLabel(text, frame);
     theLabel.center = CGPointMake(self.view.frame.size.width/2, 20);
-    theLabel.textColor = UICOLOR_HW_YELLOW_TEXT;
-    theLabel.textAlignment = UITextAlignmentCenter;
-    theLabel.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]*80/100];
-    theLabel.backgroundColor = UICOLOR_HW_DARKBLUE;
-    
-    [theLabel.layer setBorderWidth:1.5f];
-    [theLabel.layer setBorderColor:[UICOLOR_HW_YELLOW_BODER CGColor]];
-    [theLabel.layer setCornerRadius:8.0f];
-    [theLabel.layer setMasksToBounds:YES];
 
     UIView *theView = [[[UIView alloc] init] autorelease];
     [theView addSubview:theLabel];
--- a/project_files/HedgewarsMobile/Classes/UIImageExtra.m	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.m	Tue Oct 19 19:47:17 2010 -0400
@@ -138,9 +138,9 @@
     UIImage *newImage = [UIImage imageWithCGImage:imageRef];
 
     // Release colorspace, context and bitmap information
-    CGColorSpaceRelease(colorSpace);
+    CFRelease(imageRef);
     CGContextRelease(context);
-    CFRelease(imageRef);
+    CGColorSpaceRelease(colorSpace);
 
     // Return the new grayscale image
     return newImage;
--- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj	Tue Oct 19 19:47:17 2010 -0400
@@ -145,7 +145,6 @@
 		61E1F4F811D004240016A5AA /* adler32.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61E1F4F711D004240016A5AA /* adler32.pas */; };
 		61EBA62A11DFF2BC0048B68A /* title.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBA62811DFF2BC0048B68A /* title.png */; };
 		61EBA62D11DFF3310048B68A /* backgroundAndTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBA62C11DFF3310048B68A /* backgroundAndTitle.png */; };
-		61EBB1E41228920300C1784F /* bluebox-squeezed.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBB1E31228920300C1784F /* bluebox-squeezed.png */; };
 		61EF920E11DF57AC003441C4 /* arrowDown.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920511DF57AC003441C4 /* arrowDown.png */; };
 		61EF920F11DF57AC003441C4 /* arrowLeft.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920611DF57AC003441C4 /* arrowLeft.png */; };
 		61EF921011DF57AC003441C4 /* arrowRight.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920711DF57AC003441C4 /* arrowRight.png */; };
@@ -164,7 +163,6 @@
 		61F9040911DF58B00068B24D /* settingsButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040811DF58B00068B24D /* settingsButton.png */; };
 		61F9040B11DF59370068B24D /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040A11DF59370068B24D /* background.png */; };
 		61F9040E11DF59D10068B24D /* localplayButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040C11DF59D10068B24D /* localplayButton.png */; };
-		61F9043A11DF64E20068B24D /* bluebox.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9043911DF64E20068B24D /* bluebox.png */; };
 		61F904D711DF7DA30068B24D /* WeaponCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F904D611DF7DA30068B24D /* WeaponCellView.m */; };
 		922F64900F10F53100DC6EC0 /* libfpc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 928301170F10CAFC00CC5A3C /* libfpc.a */; };
 /* End PBXBuildFile section */
@@ -885,7 +883,6 @@
 		61E1F4F711D004240016A5AA /* adler32.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = adler32.pas; path = ../../hedgewars/adler32.pas; sourceTree = SOURCE_ROOT; };
 		61EBA62811DFF2BC0048B68A /* title.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = title.png; path = "Resources/Frontend-iPad/title.png"; sourceTree = "<group>"; };
 		61EBA62C11DFF3310048B68A /* backgroundAndTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backgroundAndTitle.png; path = "Resources/Frontend-iPad/backgroundAndTitle.png"; sourceTree = "<group>"; };
-		61EBB1E31228920300C1784F /* bluebox-squeezed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bluebox-squeezed.png"; path = "Resources/Frontend-iPad/bluebox-squeezed.png"; sourceTree = "<group>"; };
 		61EF920511DF57AC003441C4 /* arrowDown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = arrowDown.png; path = Resources/Overlay/arrowDown.png; sourceTree = "<group>"; };
 		61EF920611DF57AC003441C4 /* arrowLeft.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = arrowLeft.png; path = Resources/Overlay/arrowLeft.png; sourceTree = "<group>"; };
 		61EF920711DF57AC003441C4 /* arrowRight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = arrowRight.png; path = Resources/Overlay/arrowRight.png; sourceTree = "<group>"; };
@@ -918,7 +915,6 @@
 		61F9040A11DF59370068B24D /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background.png; path = "Resources/Frontend-iPad/background.png"; sourceTree = "<group>"; };
 		61F9040C11DF59D10068B24D /* localplayButton.png */ = {isa = PBXFileReference; explicitFileType = image.png; name = localplayButton.png; path = "Resources/Frontend-iPad/localplayButton.png"; sourceTree = "<group>"; };
 		61F9040D11DF59D10068B24D /* netplayButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = netplayButton.png; path = "Resources/Frontend-iPad/netplayButton.png"; sourceTree = "<group>"; };
-		61F9043911DF64E20068B24D /* bluebox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bluebox.png; path = "Resources/Frontend-iPad/bluebox.png"; sourceTree = "<group>"; };
 		61F904D511DF7DA30068B24D /* WeaponCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeaponCellView.h; sourceTree = "<group>"; };
 		61F904D611DF7DA30068B24D /* WeaponCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WeaponCellView.m; sourceTree = "<group>"; };
 		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -1397,11 +1393,9 @@
 		61F903FA11DF58680068B24D /* Frontend-iPad */ = {
 			isa = PBXGroup;
 			children = (
-				61EBB1E31228920300C1784F /* bluebox-squeezed.png */,
 				615AD96112073B4D00F2FF04 /* startGameButton.png */,
 				615AD9EA1207654E00F2FF04 /* helpButton.png */,
 				615AD9E8120764CA00F2FF04 /* backButton.png */,
-				61F9043911DF64E20068B24D /* bluebox.png */,
 				61EBA62811DFF2BC0048B68A /* title.png */,
 				61F9040C11DF59D10068B24D /* localplayButton.png */,
 				61F9040D11DF59D10068B24D /* netplayButton.png */,
@@ -2093,7 +2087,6 @@
 				61F9040911DF58B00068B24D /* settingsButton.png in Resources */,
 				61F9040B11DF59370068B24D /* background.png in Resources */,
 				61F9040E11DF59D10068B24D /* localplayButton.png in Resources */,
-				61F9043A11DF64E20068B24D /* bluebox.png in Resources */,
 				61EBA62A11DFF2BC0048B68A /* title.png in Resources */,
 				61EBA62D11DFF3310048B68A /* backgroundAndTitle.png in Resources */,
 				61F7A43811E290650040BA66 /* Icon-72.png in Resources */,
@@ -2111,7 +2104,6 @@
 				615AD9E9120764CA00F2FF04 /* backButton.png in Resources */,
 				615AD9EB1207654E00F2FF04 /* helpButton.png in Resources */,
 				6187AEBD120781B900B31A27 /* Settings in Resources */,
-				61EBB1E41228920300C1784F /* bluebox-squeezed.png in Resources */,
 				611EE974122A9C4100DF6938 /* clickSound.wav in Resources */,
 				611EE9D9122AA10A00DF6938 /* backSound.wav in Resources */,
 				611EE9DA122AA10A00DF6938 /* selSound.wav in Resources */,
@@ -2147,7 +2139,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\n\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\n#the following ones must be removed when their support is implemented\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball} ${PROJECT_DIR}/Data/Missions/Maps/\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n";
+			shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\n\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\n#the following ones must be removed when their support is implemented\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball} ${PROJECT_DIR}/Data/Missions/Maps/\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n";
 			showEnvVarsInLog = 0;
 		};
 		9283011B0F10CB2D00CC5A3C /* Build libfpc.a */ = {
@@ -2696,7 +2688,7 @@
 				FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/2.5.1;
 				FPC_MAIN_FILE = "$(PROJECT_DIR)/../../hedgewars/hwLibrary.pas";
 				FPC_RTL_UNITS_BASE = /usr/local/lib/fpc;
-				FPC_SPECIFIC_OPTIONS = "-Ci- -Cr- -Co- -O-2 -Xs  -Cfvfpv2";
+				FPC_SPECIFIC_OPTIONS = "-Ci- -Cr- -Co- -O-2 -Xs  -Cfvfpv2 -dDEBUGFILE";
 				FPC_UNITS_PATH = "-Fu\"$(PROJECT_DIR)\"";
 				GCC_C_LANGUAGE_STANDARD = c99;
 				GCC_DEBUGGING_SYMBOLS = default;
--- a/project_files/HedgewarsMobile/Info.plist	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Info.plist	Tue Oct 19 19:47:17 2010 -0400
@@ -28,9 +28,13 @@
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>
-	<string>1.0.1</string>
+	<string>1.1</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
+	<key>UIApplicationExitsOnSuspend</key>
+	<true/>
+	<key>UILaunchImageFile~ipad</key>
+	<string>LI-ipad</string>
 	<key>UIStatusBarHidden</key>
 	<true/>
 	<key>UISupportedInterfaceOrientations</key>
@@ -38,9 +42,5 @@
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
-	<key>UILaunchImageFile~ipad</key>
-	<string>LI-ipad</string>
-	<key>UIApplicationExitsOnSuspend</key>
-	<true/>
 </dict>
 </plist>
Binary file project_files/HedgewarsMobile/Resources/Frontend-iPad/bluebox-squeezed.png has changed
Binary file project_files/HedgewarsMobile/Resources/Frontend-iPad/bluebox.png has changed
--- a/project_files/HedgewarsMobile/Resources/MainMenuViewController-iPad.xib	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Resources/MainMenuViewController-iPad.xib	Tue Oct 19 19:47:17 2010 -0400
@@ -90,33 +90,6 @@
 							<string key="NSResourceName">localplayButton.png</string>
 						</object>
 					</object>
-					<object class="IBUIButton" id="607338789">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">-2147483356</int>
-						<string key="NSFrame">{{611, 417}, {263, 244}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<int key="IBUITag">1</int>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<int key="IBUIContentHorizontalAlignment">0</int>
-						<int key="IBUIContentVerticalAlignment">0</int>
-						<reference key="IBUIFont" ref="917635782"/>
-						<double key="IBUITitleEdgeInsets.top">215</double>
-						<double key="IBUITitleEdgeInsets.bottom">0.0</double>
-						<double key="IBUITitleEdgeInsets.left">0.0</double>
-						<double key="IBUITitleEdgeInsets.right">0.0</double>
-						<string key="IBUINormalTitle">Multiplayer</string>
-						<reference key="IBUIHighlightedTitleColor" ref="918890028"/>
-						<object class="NSColor" key="IBUINormalTitleColor">
-							<int key="NSColorSpace">2</int>
-							<bytes key="NSRGB">MC45OTYwNzg0OTEyIDAuODAwMDAwMDcxNSAwLjAzOTIxNTY4NzY2AA</bytes>
-						</object>
-						<reference key="IBUINormalTitleShadowColor" ref="112471976"/>
-						<object class="NSCustomResource" key="IBUINormalBackgroundImage">
-							<string key="NSClassName">NSImage</string>
-							<string key="NSResourceName">netplayButton.png</string>
-						</object>
-					</object>
 					<object class="IBUIButton" id="95106947">
 						<reference key="NSNextResponder" ref="191373211"/>
 						<int key="NSvFlags">292</int>
@@ -227,15 +200,6 @@
 				<object class="IBConnectionRecord">
 					<object class="IBCocoaTouchEventConnection" key="connection">
 						<string key="label">switchViews:</string>
-						<reference key="source" ref="607338789"/>
-						<reference key="destination" ref="372490531"/>
-						<int key="IBEventType">7</int>
-					</object>
-					<int key="connectionID">49</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBCocoaTouchEventConnection" key="connection">
-						<string key="label">switchViews:</string>
 						<reference key="source" ref="898948205"/>
 						<reference key="destination" ref="372490531"/>
 						<int key="IBEventType">7</int>
@@ -267,7 +231,6 @@
 						<object class="NSMutableArray" key="children">
 							<bool key="EncodedWithXMLCoder">YES</bool>
 							<reference ref="976741091"/>
-							<reference ref="607338789"/>
 							<reference ref="898948205"/>
 							<reference ref="867308721"/>
 							<reference ref="894101036"/>
@@ -293,12 +256,6 @@
 						<string key="objectName">local</string>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">40</int>
-						<reference key="object" ref="607338789"/>
-						<reference key="parent" ref="191373211"/>
-						<string key="objectName">multi</string>
-					</object>
-					<object class="IBObjectRecord">
 						<int key="objectID">45</int>
 						<reference key="object" ref="95106947"/>
 						<reference key="parent" ref="191373211"/>
@@ -330,7 +287,6 @@
 					<string>1.IBPluginDependency</string>
 					<string>37.IBPluginDependency</string>
 					<string>39.IBPluginDependency</string>
-					<string>40.IBPluginDependency</string>
 					<string>45.IBPluginDependency</string>
 					<string>52.IBPluginDependency</string>
 					<string>88.IBPluginDependency</string>
@@ -346,7 +302,6 @@
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				</object>
 			</object>
 			<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -384,17 +339,6 @@
 							<string key="candidateClassName">id</string>
 						</object>
 					</object>
-					<object class="NSMutableDictionary" key="outlets">
-						<string key="NS.key.0">versionLabel</string>
-						<string key="NS.object.0">UILabel</string>
-					</object>
-					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
-						<string key="NS.key.0">versionLabel</string>
-						<object class="IBToOneOutletInfo" key="NS.object.0">
-							<string key="name">versionLabel</string>
-							<string key="candidateClassName">UILabel</string>
-						</object>
-					</object>
 					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 						<string key="majorKey">IBProjectSource</string>
 						<string key="minorKey">Classes/MainMenuViewController.h</string>
@@ -533,14 +477,6 @@
 					</object>
 				</object>
 				<object class="IBPartialClassDescription">
-					<string key="className">UILabel</string>
-					<string key="superclassName">UIView</string>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBFrameworkSource</string>
-						<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
 					<string key="className">UIResponder</string>
 					<string key="superclassName">NSObject</string>
 					<reference key="sourceIdentifier" ref="864669175"/>
@@ -633,7 +569,6 @@
 				<bool key="EncodedWithXMLCoder">YES</bool>
 				<string>backgroundAndTitle.png</string>
 				<string>localplayButton.png</string>
-				<string>netplayButton.png</string>
 				<string>savesButton.png</string>
 				<string>settingsButton.png</string>
 			</object>
@@ -641,7 +576,6 @@
 				<bool key="EncodedWithXMLCoder">YES</bool>
 				<string>{1024, 768}</string>
 				<string>{263, 244}</string>
-				<string>{263, 244}</string>
 				<string>{61, 59}</string>
 				<string>{61, 59}</string>
 			</object>
--- a/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPad.xib	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPad.xib	Tue Oct 19 19:47:17 2010 -0400
@@ -47,6 +47,7 @@
 						<int key="NSvFlags">292</int>
 						<string key="NSFrameSize">{1024, 768}</string>
 						<reference key="NSSuperview" ref="191373211"/>
+						<bool key="IBUIAutoresizesSubviews">NO</bool>
 						<bool key="IBUIUserInteractionEnabled">NO</bool>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
 						<object class="NSCustomResource" key="IBUIImage">
@@ -54,97 +55,6 @@
 							<string key="NSResourceName">background.png</string>
 						</object>
 					</object>
-					<object class="IBUIImageView" id="553937568">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{0, 60}, {320, 618}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<bool key="IBUIUserInteractionEnabled">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<object class="NSCustomResource" key="IBUIImage" id="1034685562">
-							<string key="NSClassName">NSImage</string>
-							<string key="NSResourceName">bluebox.png</string>
-						</object>
-					</object>
-					<object class="IBUIImageView" id="867832822">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{704, 214}, {320, 464}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<bool key="IBUIUserInteractionEnabled">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<reference key="IBUIImage" ref="1034685562"/>
-					</object>
-					<object class="IBUIImageView" id="438802257">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{337, 187}, {350, 505}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<bool key="IBUIUserInteractionEnabled">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<reference key="IBUIImage" ref="1034685562"/>
-					</object>
-					<object class="IBUIImageView" id="246022224">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{714, 14}, {300, 190}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<bool key="IBUIUserInteractionEnabled">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<reference key="IBUIImage" ref="1034685562"/>
-					</object>
-					<object class="IBUIImageView" id="742028380">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{106, 707}, {320, 40}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<bool key="IBUIUserInteractionEnabled">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<object class="NSCustomResource" key="IBUIImage" id="362444284">
-							<string key="NSClassName">NSImage</string>
-							<string key="NSResourceName">bluebox-squeezed.png</string>
-						</object>
-					</object>
-					<object class="IBUIImageView" id="696928530">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{594, 707}, {320, 40}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<bool key="IBUIUserInteractionEnabled">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<reference key="IBUIImage" ref="362444284"/>
-					</object>
-					<object class="IBUILabel" id="848132519">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{610, 713}, {145, 29}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<bool key="IBUIClipsSubviews">YES</bool>
-						<int key="IBUIContentMode">7</int>
-						<bool key="IBUIUserInteractionEnabled">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<string key="IBUIText">Max Hogs:</string>
-						<object class="NSFont" key="IBUIFont" id="138155767">
-							<string key="NSName">Helvetica-Oblique</string>
-							<double key="NSSize">18</double>
-							<int key="NSfFlags">16</int>
-						</object>
-						<object class="NSColor" key="IBUITextColor">
-							<int key="NSColorSpace">2</int>
-							<bytes key="NSRGB">MC45MTM3MjU1NTQ5IDAuNzMzMzMzMzQ5MiAwLjAxMTc2NDcwNzA0AA</bytes>
-						</object>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">1</int>
-						<float key="IBUIMinimumFontSize">10</float>
-						<int key="IBUITextAlignment">2</int>
-					</object>
 					<object class="IBUISegmentedControl" id="88728219">
 						<reference key="NSNextResponder" ref="191373211"/>
 						<int key="NSvFlags">289</int>
@@ -198,7 +108,7 @@
 					<object class="IBUISlider" id="938256702">
 						<reference key="NSNextResponder" ref="191373211"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{263, 716}, {149, 23}}</string>
+						<string key="NSFrame">{{263, 723}, {149, 23}}</string>
 						<reference key="NSSuperview" ref="191373211"/>
 						<bool key="IBUIOpaque">NO</bool>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -241,7 +151,7 @@
 					<object class="IBUILabel" id="634417433">
 						<reference key="NSNextResponder" ref="191373211"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{778, 717}, {42, 21}}</string>
+						<string key="NSFrame">{{778, 725}, {42, 21}}</string>
 						<reference key="NSSuperview" ref="191373211"/>
 						<bool key="IBUIOpaque">NO</bool>
 						<bool key="IBUIClipsSubviews">YES</bool>
@@ -266,7 +176,7 @@
 					<object class="IBUILabel" id="743202682">
 						<reference key="NSNextResponder" ref="191373211"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{112, 713}, {145, 29}}</string>
+						<string key="NSFrame">{{112, 720}, {145, 29}}</string>
 						<reference key="NSSuperview" ref="191373211"/>
 						<bool key="IBUIOpaque">NO</bool>
 						<bool key="IBUIClipsSubviews">YES</bool>
@@ -274,7 +184,11 @@
 						<bool key="IBUIUserInteractionEnabled">NO</bool>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
 						<string key="IBUIText">Label</string>
-						<reference key="IBUIFont" ref="138155767"/>
+						<object class="NSFont" key="IBUIFont">
+							<string key="NSName">Helvetica-Oblique</string>
+							<double key="NSSize">18</double>
+							<int key="NSfFlags">16</int>
+						</object>
 						<object class="NSColor" key="IBUITextColor">
 							<int key="NSColorSpace">2</int>
 							<bytes key="NSRGB">MC45MTM3MjU1NTQ5IDAuNzMzMzMzMzQ5MiAwLjAxMTc2NDcwNzA0AA</bytes>
@@ -284,48 +198,10 @@
 						<float key="IBUIMinimumFontSize">10</float>
 						<int key="IBUITextAlignment">1</int>
 					</object>
-					<object class="IBUIButton" id="967260168">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">-2147483356</int>
-						<string key="NSFrame">{{10, 70}, {300, 600}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<int key="IBUIContentHorizontalAlignment">0</int>
-						<int key="IBUIContentVerticalAlignment">0</int>
-						<reference key="IBUIFont" ref="261639815"/>
-						<int key="IBUIButtonType">1</int>
-						<string key="IBUINormalTitle">teams section</string>
-						<reference key="IBUIHighlightedTitleColor" ref="437070330"/>
-						<object class="NSColor" key="IBUINormalTitleColor">
-							<int key="NSColorSpace">1</int>
-							<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
-						</object>
-						<reference key="IBUINormalTitleShadowColor" ref="65043801"/>
-					</object>
-					<object class="IBUIButton" id="68378447">
-						<reference key="NSNextResponder" ref="191373211"/>
-						<int key="NSvFlags">-2147483356</int>
-						<string key="NSFrame">{{348, 200}, {328, 480}}</string>
-						<reference key="NSSuperview" ref="191373211"/>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<int key="IBUIContentHorizontalAlignment">0</int>
-						<int key="IBUIContentVerticalAlignment">0</int>
-						<reference key="IBUIFont" ref="261639815"/>
-						<int key="IBUIButtonType">1</int>
-						<string key="IBUINormalTitle">details section</string>
-						<reference key="IBUIHighlightedTitleColor" ref="437070330"/>
-						<object class="NSColor" key="IBUINormalTitleColor">
-							<int key="NSColorSpace">1</int>
-							<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
-						</object>
-						<reference key="IBUINormalTitleShadowColor" ref="65043801"/>
-					</object>
 					<object class="IBUIImageView" id="920829014">
 						<reference key="NSNextResponder" ref="191373211"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{357, 30}, {309, 165}}</string>
+						<string key="NSFrame">{{357, 28}, {309, 165}}</string>
 						<reference key="NSSuperview" ref="191373211"/>
 						<bool key="IBUIOpaque">NO</bool>
 						<bool key="IBUIUserInteractionEnabled">NO</bool>
@@ -357,7 +233,7 @@
 					<object class="IBUIButton" id="550636851">
 						<reference key="NSNextResponder" ref="191373211"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{441, 693}, {142, 64}}</string>
+						<string key="NSFrame">{{441, 702}, {142, 64}}</string>
 						<reference key="NSSuperview" ref="191373211"/>
 						<bool key="IBUIOpaque">NO</bool>
 						<int key="IBUITag">1</int>
@@ -609,19 +485,10 @@
 							<reference ref="550636851"/>
 							<reference ref="394383001"/>
 							<reference ref="920829014"/>
-							<reference ref="68378447"/>
-							<reference ref="967260168"/>
 							<reference ref="743202682"/>
 							<reference ref="634417433"/>
 							<reference ref="326163764"/>
 							<reference ref="938256702"/>
-							<reference ref="848132519"/>
-							<reference ref="696928530"/>
-							<reference ref="742028380"/>
-							<reference ref="246022224"/>
-							<reference ref="438802257"/>
-							<reference ref="867832822"/>
-							<reference ref="553937568"/>
 							<reference ref="420136851"/>
 							<reference ref="88728219"/>
 						</object>
@@ -653,16 +520,6 @@
 						<reference key="parent" ref="191373211"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">51</int>
-						<reference key="object" ref="68378447"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">39</int>
-						<reference key="object" ref="967260168"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
 						<int key="objectID">17</int>
 						<reference key="object" ref="743202682"/>
 						<reference key="parent" ref="191373211"/>
@@ -688,41 +545,6 @@
 						<reference key="parent" ref="191373211"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">78</int>
-						<reference key="object" ref="848132519"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">80</int>
-						<reference key="object" ref="696928530"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">79</int>
-						<reference key="object" ref="742028380"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">61</int>
-						<reference key="object" ref="246022224"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">54</int>
-						<reference key="object" ref="438802257"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">53</int>
-						<reference key="object" ref="867832822"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">55</int>
-						<reference key="object" ref="553937568"/>
-						<reference key="parent" ref="191373211"/>
-					</object>
-					<object class="IBObjectRecord">
 						<int key="objectID">50</int>
 						<reference key="object" ref="420136851"/>
 						<reference key="parent" ref="191373211"/>
@@ -739,23 +561,14 @@
 					<string>1.IBPluginDependency</string>
 					<string>11.IBPluginDependency</string>
 					<string>17.IBPluginDependency</string>
-					<string>39.IBPluginDependency</string>
 					<string>50.IBPluginDependency</string>
-					<string>51.IBPluginDependency</string>
-					<string>53.IBPluginDependency</string>
-					<string>54.IBPluginDependency</string>
-					<string>55.IBPluginDependency</string>
 					<string>57.IBPluginDependency</string>
-					<string>61.IBPluginDependency</string>
 					<string>66.IBPluginDependency</string>
 					<string>7.IBPluginDependency</string>
 					<string>70.IBPluginDependency</string>
 					<string>72.IBPluginDependency</string>
 					<string>75.IBPluginDependency</string>
-					<string>78.IBPluginDependency</string>
-					<string>79.IBPluginDependency</string>
 					<string>8.IBPluginDependency</string>
-					<string>80.IBPluginDependency</string>
 					<string>9.CustomClassName</string>
 					<string>9.IBPluginDependency</string>
 				</object>
@@ -763,16 +576,7 @@
 					<bool key="EncodedWithXMLCoder">YES</bool>
 					<string>MapConfigViewController</string>
 					<string>UIResponder</string>
-					<string>{{489, 236}, {1024, 768}}</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+					<string>{{288, 236}, {1024, 768}}</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@@ -869,7 +673,6 @@
 						<bool key="EncodedWithXMLCoder">YES</bool>
 						<object class="NSArray" key="dict.sortedKeys">
 							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>delegate</string>
 							<string>maxLabel</string>
 							<string>previewButton</string>
 							<string>segmentedControl</string>
@@ -879,7 +682,6 @@
 						</object>
 						<object class="NSMutableArray" key="dict.values">
 							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>id</string>
 							<string>UILabel</string>
 							<string>MapPreviewButtonView</string>
 							<string>UISegmentedControl</string>
@@ -892,7 +694,6 @@
 						<bool key="EncodedWithXMLCoder">YES</bool>
 						<object class="NSArray" key="dict.sortedKeys">
 							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>delegate</string>
 							<string>maxLabel</string>
 							<string>previewButton</string>
 							<string>segmentedControl</string>
@@ -903,10 +704,6 @@
 						<object class="NSMutableArray" key="dict.values">
 							<bool key="EncodedWithXMLCoder">YES</bool>
 							<object class="IBToOneOutletInfo">
-								<string key="name">delegate</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBToOneOutletInfo">
 								<string key="name">maxLabel</string>
 								<string key="candidateClassName">UILabel</string>
 							</object>
@@ -1221,8 +1018,6 @@
 				<bool key="EncodedWithXMLCoder">YES</bool>
 				<string>backButton.png</string>
 				<string>background.png</string>
-				<string>bluebox-squeezed.png</string>
-				<string>bluebox.png</string>
 				<string>helpButton.png</string>
 				<string>startGameButton.png</string>
 				<string>title.png</string>
@@ -1231,8 +1026,6 @@
 				<bool key="EncodedWithXMLCoder">YES</bool>
 				<string>{64, 64}</string>
 				<string>{1024, 768}</string>
-				<string>{320, 40}</string>
-				<string>{512, 512}</string>
 				<string>{64, 64}</string>
 				<string>{142, 64}</string>
 				<string>{273, 151}</string>
--- a/project_files/HedgewarsMobile/Resources/Settings/credits.plist	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/Resources/Settings/credits.plist	Tue Oct 19 19:47:17 2010 -0400
@@ -17,7 +17,7 @@
 		<string>Henning &quot;Prg&quot; Kühn</string>
 	</array>
 	<array>
-		<string>Finn &quot;Tiyuri&quot; Brice</string>
+		<string>Tiyuri</string>
 		<string>Joshua Frese</string>
 		<string>Stanko Tadić</string>
 		<string>Julien Koesten</string>
@@ -71,7 +71,7 @@
 		<string>Maze maps</string>
 	</array>
 	<array>
-		<string>Main graphics and art director</string>
+		<string></string>
 		<string></string>
 		<string></string>
 		<string></string>
--- a/project_files/HedgewarsMobile/SDL.patch	Tue Oct 19 19:46:43 2010 -0400
+++ b/project_files/HedgewarsMobile/SDL.patch	Tue Oct 19 19:47:17 2010 -0400
@@ -1,48 +1,7 @@
-diff -r f50c7996d925 Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj
---- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj	Wed Sep 29 21:24:50 2010 -0700
-+++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj	Sun Oct 03 00:21:37 2010 +0200
-@@ -106,6 +106,7 @@
- 		04F2AF561104ABD200D6DDF7 /* SDL_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F2AF551104ABD200D6DDF7 /* SDL_assert.c */; };
- 		56ED04E1118A8EE200A56AA6 /* SDL_power.c in Sources */ = {isa = PBXBuildFile; fileRef = 56ED04E0118A8EE200A56AA6 /* SDL_power.c */; };
- 		56ED04E3118A8EFD00A56AA6 /* SDL_syspower.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ED04E2118A8EFD00A56AA6 /* SDL_syspower.m */; };
-+		61F7E7F4125543DA00DE6C14 /* SDL_uikitappdelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689FCC0E26E9D400F90B21 /* SDL_uikitappdelegate.m */; };
- 		FD24846D0E5655AE0021E198 /* SDL_uikitkeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = FD24846B0E5655AE0021E198 /* SDL_uikitkeyboard.h */; };
- 		FD3F495C0DEA5B2100C5B771 /* begin_code.h in Headers */ = {isa = PBXBuildFile; fileRef = FD99B8CC0DD52EB400FB1D6B /* begin_code.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 		FD3F495D0DEA5B2100C5B771 /* close_code.h in Headers */ = {isa = PBXBuildFile; fileRef = FD99B8CD0DD52EB400FB1D6B /* close_code.h */; settings = {ATTRIBUTES = (Public, ); }; };
-@@ -192,8 +193,6 @@
- 		FD689F250E26E5D900F90B21 /* SDL_uikitwindow.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F150E26E5D900F90B21 /* SDL_uikitwindow.m */; };
- 		FD689F260E26E5D900F90B21 /* SDL_uikitopenglview.h in Headers */ = {isa = PBXBuildFile; fileRef = FD689F160E26E5D900F90B21 /* SDL_uikitopenglview.h */; };
- 		FD689F270E26E5D900F90B21 /* SDL_uikitopenglview.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F170E26E5D900F90B21 /* SDL_uikitopenglview.m */; };
--		FD689FCE0E26E9D400F90B21 /* SDL_uikitappdelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689FCC0E26E9D400F90B21 /* SDL_uikitappdelegate.m */; };
--		FD689FCF0E26E9D400F90B21 /* SDL_uikitappdelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = FD689FCD0E26E9D400F90B21 /* SDL_uikitappdelegate.h */; };
- 		FD6C83B60DEA66E500ABEE55 /* SDL_systimer.h in Headers */ = {isa = PBXBuildFile; fileRef = FD99BA2D0DD52EDC00FB1D6B /* SDL_systimer.h */; };
- 		FD8BD7AC0E27DCA400B52CD5 /* SDL_opengles.h in Headers */ = {isa = PBXBuildFile; fileRef = FD8BD7AB0E27DCA400B52CD5 /* SDL_opengles.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 		FD8BD8250E27E25900B52CD5 /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = FD8BD8190E27E25900B52CD5 /* SDL_sysloadso.c */; };
-@@ -1186,7 +1185,6 @@
- 				FD689F200E26E5D900F90B21 /* SDL_uikitvideo.h in Headers */,
- 				FD689F240E26E5D900F90B21 /* SDL_uikitwindow.h in Headers */,
- 				FD689F260E26E5D900F90B21 /* SDL_uikitopenglview.h in Headers */,
--				FD689FCF0E26E9D400F90B21 /* SDL_uikitappdelegate.h in Headers */,
- 				FD8BD7AC0E27DCA400B52CD5 /* SDL_opengles.h in Headers */,
- 				FDC656490E560DF800311C8E /* jumphack.h in Headers */,
- 				FD24846D0E5655AE0021E198 /* SDL_uikitkeyboard.h in Headers */,
-@@ -1347,6 +1345,7 @@
- 			isa = PBXSourcesBuildPhase;
- 			buildActionMask = 2147483647;
- 			files = (
-+				61F7E7F4125543DA00DE6C14 /* SDL_uikitappdelegate.m in Sources */,
- 				006E9852119550FB001DE610 /* audio.c in Sources */,
- 				006E9853119550FB001DE610 /* common.c in Sources */,
- 				006E9859119550FB001DE610 /* platform.c in Sources */,
-@@ -1429,7 +1428,6 @@
- 				FD689F230E26E5D900F90B21 /* SDL_uikitview.m in Sources */,
- 				FD689F250E26E5D900F90B21 /* SDL_uikitwindow.m in Sources */,
- 				FD689F270E26E5D900F90B21 /* SDL_uikitopenglview.m in Sources */,
--				FD689FCE0E26E9D400F90B21 /* SDL_uikitappdelegate.m in Sources */,
- 				FD8BD8250E27E25900B52CD5 /* SDL_sysloadso.c in Sources */,
- 				FDC656480E560DF800311C8E /* jumphack.c in Sources */,
- 				0495E68C0E97408800152DFE /* SDL_renderer_gl.c in Sources */,
-@@ -1549,15 +1547,19 @@
+diff -r c0021a587dc7 Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj
+--- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj	Sun Oct 10 15:45:58 2010 -0700
++++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj	Sat Oct 16 18:35:03 2010 +0200
+@@ -1549,15 +1549,19 @@
  			isa = XCBuildConfiguration;
  			buildSettings = {
  				ALWAYS_SEARCH_USER_PATHS = NO;
@@ -54,9 +13,8 @@
 +				GCC_VERSION = com.apple.compilers.llvmgcc42;
  				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  				GCC_WARN_UNUSED_VARIABLE = NO;
--				IPHONEOS_DEPLOYMENT_TARGET = 3.1;
 +				HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../include\"";
-+				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
+ 				IPHONEOS_DEPLOYMENT_TARGET = 3.1;
  				ONLY_ACTIVE_ARCH = NO;
  				PREBINDING = NO;
 -				SDKROOT = iphoneos3.2;
@@ -64,7 +22,7 @@
  				TARGETED_DEVICE_FAMILY = "1,2";
  			};
  			name = Debug;
-@@ -1566,14 +1568,18 @@
+@@ -1566,14 +1570,19 @@
  			isa = XCBuildConfiguration;
  			buildSettings = {
  				ALWAYS_SEARCH_USER_PATHS = NO;
@@ -74,21 +32,21 @@
  				GCC_C_LANGUAGE_STANDARD = c99;
 +				GCC_OPTIMIZATION_LEVEL = 2;
 +				GCC_THUMB_SUPPORT = NO;
++				GCC_UNROLL_LOOPS = YES;
 +				GCC_VERSION = com.apple.compilers.llvmgcc42;
  				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  				GCC_WARN_UNUSED_VARIABLE = NO;
--				IPHONEOS_DEPLOYMENT_TARGET = 3.1;
 +				HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../include\"";
-+				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
+ 				IPHONEOS_DEPLOYMENT_TARGET = 3.1;
  				PREBINDING = NO;
 -				SDKROOT = iphoneos3.2;
 +				SDKROOT = iphoneos4.0;
  				TARGETED_DEVICE_FAMILY = "1,2";
  			};
  			name = Release;
-diff -r f50c7996d925 Xcode-iPhoneOS/SDL/testsdl-Info.plist
---- a/Xcode-iPhoneOS/SDL/testsdl-Info.plist	Wed Sep 29 21:24:50 2010 -0700
-+++ b/Xcode-iPhoneOS/SDL/testsdl-Info.plist	Sun Oct 03 00:21:37 2010 +0200
+diff -r c0021a587dc7 Xcode-iPhoneOS/SDL/testsdl-Info.plist
+--- a/Xcode-iPhoneOS/SDL/testsdl-Info.plist	Sun Oct 10 15:45:58 2010 -0700
++++ b/Xcode-iPhoneOS/SDL/testsdl-Info.plist	Sat Oct 16 18:35:03 2010 +0200
 @@ -16,7 +16,5 @@
  	<string>????</string>
  	<key>CFBundleVersion</key>
@@ -97,9 +55,9 @@
 -	<string>MainWindow</string>
  </dict>
  </plist>
-diff -r f50c7996d925 include/SDL_config_iphoneos.h
---- a/include/SDL_config_iphoneos.h	Wed Sep 29 21:24:50 2010 -0700
-+++ b/include/SDL_config_iphoneos.h	Sun Oct 03 00:21:37 2010 +0200
+diff -r c0021a587dc7 include/SDL_config_iphoneos.h
+--- a/include/SDL_config_iphoneos.h	Sun Oct 10 15:45:58 2010 -0700
++++ b/include/SDL_config_iphoneos.h	Sat Oct 16 18:35:03 2010 +0200
 @@ -98,6 +98,8 @@
  #define HAVE_COS	1
  #define HAVE_COSF	1
@@ -135,9 +93,24 @@
 +#define SDL_VIEW_TAG 456987
 +
  #endif /* _SDL_config_iphoneos_h */
-diff -r f50c7996d925 src/video/SDL_renderer_gles.c
---- a/src/video/SDL_renderer_gles.c	Wed Sep 29 21:24:50 2010 -0700
-+++ b/src/video/SDL_renderer_gles.c	Sun Oct 03 00:21:37 2010 +0200
+diff -r c0021a587dc7 src/SDL_fatal.c
+--- a/src/SDL_fatal.c	Sun Oct 10 15:45:58 2010 -0700
++++ b/src/SDL_fatal.c	Sat Oct 16 18:35:03 2010 +0200
+@@ -38,9 +38,9 @@
+ static void
+ SDL_Parachute(int sig)
+ {
+-    signal(sig, SIG_DFL);
++    /*signal(sig, SIG_DFL);
+     SDL_Quit();
+-    raise(sig);
++    raise(sig);*/
+ }
+ 
+ static const int SDL_fatal_signals[] = {
+diff -r c0021a587dc7 src/video/SDL_renderer_gles.c
+--- a/src/video/SDL_renderer_gles.c	Sun Oct 10 15:45:58 2010 -0700
++++ b/src/video/SDL_renderer_gles.c	Sat Oct 16 18:35:03 2010 +0200
 @@ -324,6 +324,9 @@
      data->glDisable(GL_CULL_FACE);
      data->updateSize = SDL_TRUE;
@@ -219,9 +192,9 @@
      }
  
      data->glDisable(GL_TEXTURE_2D);
-diff -r f50c7996d925 src/video/SDL_video.c
---- a/src/video/SDL_video.c	Wed Sep 29 21:24:50 2010 -0700
-+++ b/src/video/SDL_video.c	Sun Oct 03 00:21:37 2010 +0200
+diff -r c0021a587dc7 src/video/SDL_video.c
+--- a/src/video/SDL_video.c	Sun Oct 10 15:45:58 2010 -0700
++++ b/src/video/SDL_video.c	Sat Oct 16 18:35:03 2010 +0200
 @@ -1416,9 +1416,9 @@
          SDL_MinimizeWindow(window);
      }
@@ -234,21 +207,23 @@
      if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN))
          && _this->SetWindowGrab) {
          _this->SetWindowGrab(_this, window);
-diff -r f50c7996d925 src/video/uikit/SDL_uikitopengles.m
---- a/src/video/uikit/SDL_uikitopengles.m	Wed Sep 29 21:24:50 2010 -0700
-+++ b/src/video/uikit/SDL_uikitopengles.m	Sun Oct 03 00:21:37 2010 +0200
-@@ -114,7 +114,7 @@
+diff -r c0021a587dc7 src/video/uikit/SDL_uikitopengles.m
+--- a/src/video/uikit/SDL_uikitopengles.m	Sun Oct 10 15:45:58 2010 -0700
++++ b/src/video/uikit/SDL_uikitopengles.m	Sat Oct 16 18:35:03 2010 +0200
+@@ -114,8 +114,8 @@
  									bBits: _this->gl_config.blue_size \
  									aBits: _this->gl_config.alpha_size \
  									depthBits: _this->gl_config.depth_size];
 -	
+-	data->view = view;
 +        view.tag = SDL_VIEW_TAG;
- 	data->view = view;
++        data->view = view;
  	
  	/* add the view to our window */
-diff -r f50c7996d925 src/video/uikit/SDL_uikitview.m
---- a/src/video/uikit/SDL_uikitview.m	Wed Sep 29 21:24:50 2010 -0700
-+++ b/src/video/uikit/SDL_uikitview.m	Sun Oct 03 00:21:37 2010 +0200
+ 	[uiwindow addSubview: view ];
+diff -r c0021a587dc7 src/video/uikit/SDL_uikitview.m
+--- a/src/video/uikit/SDL_uikitview.m	Sun Oct 10 15:45:58 2010 -0700
++++ b/src/video/uikit/SDL_uikitview.m	Sat Oct 16 18:35:03 2010 +0200
 @@ -35,9 +35,6 @@
  @implementation SDL_uikitview
  
@@ -360,9 +335,9 @@
  	
  	if (NULL == view) {
  		SDL_SetError("Window has no view");
-diff -r f50c7996d925 src/video/uikit/SDL_uikitwindow.m
---- a/src/video/uikit/SDL_uikitwindow.m	Wed Sep 29 21:24:50 2010 -0700
-+++ b/src/video/uikit/SDL_uikitwindow.m	Sun Oct 03 00:21:37 2010 +0200
+diff -r c0021a587dc7 src/video/uikit/SDL_uikitwindow.m
+--- a/src/video/uikit/SDL_uikitwindow.m	Sun Oct 10 15:45:58 2010 -0700
++++ b/src/video/uikit/SDL_uikitwindow.m	Sat Oct 16 18:35:03 2010 +0200
 @@ -144,7 +144,10 @@
      if (SDL_UIKit_supports_multiple_displays) {
          [uiwindow setScreen:uiscreen];
@@ -375,9 +350,9 @@
      if (SetupWindowData(_this, window, uiwindow, SDL_TRUE) < 0) {
          [uiwindow release];
          return -1;
-diff -r f50c7996d925 src/video/uikit/keyinfotable.h
---- a/src/video/uikit/keyinfotable.h	Wed Sep 29 21:24:50 2010 -0700
-+++ b/src/video/uikit/keyinfotable.h	Sun Oct 03 00:21:37 2010 +0200
+diff -r c0021a587dc7 src/video/uikit/keyinfotable.h
+--- a/src/video/uikit/keyinfotable.h	Sun Oct 10 15:45:58 2010 -0700
++++ b/src/video/uikit/keyinfotable.h	Sat Oct 16 18:35:03 2010 +0200
 @@ -54,7 +54,7 @@
  /*  10 */ {   SDL_SCANCODE_UNKNOWN, 0 },
  /*  11 */ {   SDL_SCANCODE_UNKNOWN, 0 },
Binary file share/hedgewars/Data/Forts/Barrelhouse-preview.png has changed
Binary file share/hedgewars/Data/Forts/BarrelhouseL.png has changed
Binary file share/hedgewars/Data/Forts/BarrelhouseR.png has changed
Binary file share/hedgewars/Data/Forts/Island-preview.png has changed
Binary file share/hedgewars/Data/Forts/IslandL.png has changed
Binary file share/hedgewars/Data/Forts/IslandR.png has changed
--- a/share/hedgewars/Data/Locale/en.txt	Tue Oct 19 19:46:43 2010 -0400
+++ b/share/hedgewars/Data/Locale/en.txt	Tue Oct 19 19:47:17 2010 -0400
@@ -49,7 +49,7 @@
 00:46=Flamethrower
 00:47=Sticky Mine
 00:48=Hammer
-00:49=Resurrector
+00:49=Resurrector (beta)
 
 01:00=Let's fight!
 01:01=Round draw
@@ -430,6 +430,7 @@
 03:46=Hot Hot Hot!
 03:47=Stick these somewhere useful!
 03:48=It's Hammer time!
+03:49=Does what you guess
 
 ; Weapon Descriptions (use | as line breaks)
 04:00=Attack your enemies using a simple grenade.|It will explode once its timer reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power
@@ -481,6 +482,7 @@
 04:46=Cover your foes with sizzling liquid flame.|Heartwarming!|Attack: Activate|Up/Down: Continue aiming|Left/Right: Modify spitting power
 04:47=Double the fun with two spiky, sneaky, sticky mines.|Set up a chain reaction or defend yourself (or both!)|Attack: Hold to shoot with more power (twice)
 04:48=Why should the moles get all the abuse?|Wacking a hog can be just as fun! A good|blow from this hammer will shave off one|third of a hog's health and plunge them|underground.|Attack: Activate
+04:49=Resurrect your friends!|But beware that this also resurrects your foes.|Attack: Keep attack pressed to resurrect slowly|Up: Accelerate resurrection
 
 ; Game goal strings
 05:00=Game Modes
--- a/share/hedgewars/Data/Locale/pt_PT.txt	Tue Oct 19 19:46:43 2010 -0400
+++ b/share/hedgewars/Data/Locale/pt_PT.txt	Tue Oct 19 19:47:17 2010 -0400
@@ -49,6 +49,7 @@
 00:46=Lança-chamas
 00:47=Mina Pegajosa
 00:48=Martelo
+00:49=Ressuscitador
 
 01:00=Vamos lutar!
 01:01=Ronda empatada
@@ -403,7 +404,7 @@
 03:21=Arma Balística
 03:22=Chama-me Indiana!
 03:23=(Mesmo) Artes Marciais
-03:24=O bolo NÃO é uma mentira!
+03:24=Afinal o bolo NÃO é mentira!
 03:25=Kit de Vestuário
 03:26=Granada Sumarenta
 03:27=Granada Escaldante
@@ -421,14 +422,14 @@
 03:39=Utilitário de Transporte
 03:40=Granada Incendiária
 03:41=Enorme fã do Squawks
-03:42="I'm making a note here... HUGE SUCCESS"
+03:42=I'm making a note here... HUGE SUCCESS
 ; just to make it easier to compare...
 03:43=A composição musical mais letal de sempre
 03:44=Consumir de preferência antes de: 1923
 03:45=O poder da ciência
 03:46=Labaredas enormes!
 03:47=Cola-as onde achares mais útil!
-03:48=It's Hammer time!
+03:48=Garantia vitalícia!
 
 ; Weapon Descriptions (use | as line breaks)
 04:00=Ataca os teus inimigos usando uma simples granada.|Explodirá quando o tempo chegar a zero.|1-5: Define o temporizador da granada|Ataque: Deixa premido para lançar com mais força
@@ -457,7 +458,7 @@
 04:23=Se não tens nada a perder, isto pode ser|muito útil. Sacrifica o teu ouriço lançando-o|na direcção desejada destruindo tudo o|que esteja no caminho e explodindo no fim.|Ataque: Lança um devastador e mortífero ataque
 04:24=Feliz aniversário! Lança este bolo, deixa-o caminhar até|aos teus inimigos e oferece-lhes uma festa explosiva.|O bolo pode andar em quase qualquer terreno mas isso|faz com que detone mais cedo.|Ataque: Larga o bolo ou pára-o para que expluda
 04:25=Usa este kit de vestuário para fazer os teus inimigos saltar|para o teu ouriço (e para alguma falha ou buraco).|Ataque: Usa este kit e tenta seduzir outro ouriço
-04:26=Atira esta sumarenta melancia aos teus inimigos.|Assim que o tempo termine, dividir-se-à em vários|pedaços explosivos.|1-5: Define o temporizador da melancia|Ataque: Deixa premido para lançar com mais força
+04:26=Atira esta sumarenta melancia aos teus inimigos.|Assim que o tempo termine, dividir-se-à em várias|fatias explosivas.|1-5: Define o temporizador da melancia|Ataque: Deixa premido para lançar com mais força
 04:27=Deixa as chamas do inferno chover sobre os teus|oponentes usando este demoníaco explosivo.|Não fiques muito perto da explosão pois as pequenas|chamas são igualmente perigosas.|Ataque: Deixa premido para lançar com mais força
 04:28=Pouco depois de lançares este rocket, ira começar a|escavar através do solo e explodir assim que o rastilho|acabe ou alcance a superfície novamente.|Ataque: Deixa premido para disparar com mais força
 04:29=Não recomendada para crianças!|A arma de bolas disparamontes de pequenas|e coloridas bolas recheadas de explosivos.|Ataque: Dispara com a força máxima|Cima/Baixo: Continua a apontar
@@ -469,17 +470,17 @@
 04:35=Por vezes o tempo passa demasiado depressa.|Agarra uns segundos extra para acabar o teu ataque.|Ataque: Activar
 04:36=Há dias em que a tua pontaria anda simplesmente terrível.|Obtém alguma ajuda utilizando a tecnologia moderna.|Ataque: Activar
 04:37=Não temas a luz do dia. Só vai durar um turno|mas vais poder absorver parte do dano que|fizeres aos outros ouriços.|Ataque: Activar
-04:38=A sniper pode ser a arma mais devastadora no teu|arsenal, mas é muito pouco eficiente ao perto.|O dano aumenta proporcionalmente à distancia do alvo.|Ataque: Disparar (duas vezes)
+04:38=Embora a sniper tenha a capacidade de ser tornar uma|das armas mais devastadoras do teu arsenal é|infelizmente muito pouco eficiente a curta distancia.|O dano aumenta proporcionalmente à distancia do alvo.|Ataque: Disparar (duas vezes)
 04:39=Voa para outras partes do mapa usando o disco voador.|Este utilitário difícil de controlar é capaz de te levar|a quase qualquer posição no campo de batalha.|Ataque: Activar|Cima/Esquerda/Direita: Aplica força nessa direcção|Saltar: Larga granadas ou armas similares
 04:40=Pôe o chão a arder com esta garrafa cheia de|liquido altamente inflamável.|Ataque: Deixa premido para atirar com mais força
 04:41=Prova que a natureza está mais avançada que o que|poderiamos imaginar. Este passarito consegue transportar|o teu ouriço e largar ovos nos teus enimigos!|Attack: Activar e largar ovos|Cima/Esquerda/Direita: Bater as asas nessa direcção
-04:42=Este dispositivo de portais portatil é|capaz de instantaneamente teletransportar|os teus inimigos, o teu arsenal ou a ti|entre dois pontos no terreno.|Embora dificil de usar ao inicio, com prática|pode-se tornar uma das armas mais letais do teu arsenal.|Ataque: Disparar um portal|Trocar: Alterar (alternar) o portal de cor
-04:43=Faz da tua estreia musical um sucesso explosivo!|Larga este piano do céu, mas cuidado...|alguem precisa de o tocar o que pode custar a tua vida!|Cursor: Selecciona a zona alvo|F1-F9: Tocar piano
-04:44=Isto não é apenas queijo, é uma arma biologica!|Pode não causar muito dano quando o tempo|chegue a zero, mas vai definitivamente envenenar qualquer|ouriço que tenha a infelicidade de o cheirar.|1-5: Define o temporizador da granada|Ataque: Deixa premido para lançar com mais força
-04:45=Finalmente todas aquelas aulas de fisica vão ser úteis.|Liberta uma devastadora onda Seno nos|teus enimigos, mas cuidado,esta|arma responde com o grande coiçe.|(Esta arma está incompleta)|Ataque: Disparar
+04:42=Este dispositivo de portais portatil é capaz de|instantaneamente teletransportar os teus inimigos,|o teu arsenal ou a ti entre dois pontos no terreno.|Embora dificil de usar ao inicio, com prática pode-se|tornar uma das armas mais letais do teu arsenal.|Ataque: Disparar um portal|Trocar: Alterar (alternar) o portal de cor
+04:43=Faz da tua estreia musical um sucesso explosivo!|Larga este piano do céu, mas cuidado... alguem|precisa de o tocar o que te pode custar vida!|Cursor: Selecciona a zona alvo|F1-F9: Tocar piano
+04:44=Isto não é apenas queijo, é uma arma biologica!|Pode não causar muito dano quando o tempo|chegue a zero, mas vai definitivamente envenenar|qualquer ouriço que tenha a infelicidade de o cheirar.|1-5: Define o temporizador da granada|Ataque: Deixa premido para lançar com mais força
+04:45=Finalmente todas aquelas aulas de fisica vão ser úteis.|Liberta uma devastadora onda Seno nos teus enimigos,|mas cuidado, esta arma responde com o grande coiçe.|(Esta arma está incompleta)|Ataque: Disparar
 04:46=Cobre os teus inimigos com este viscoso e|flamejante liquido de aquecer o coração!|Ataque: Activar|Cima/Baixo: Apontar|Esquerda/Direita: Modificar a pressão
-04:47=Duplica a diversão com estas duas minas autocolantes!|Utiliza-as para atacar ou defender (ou ambos)! É contigo!|Ataque: Deixa pressionado para disparar mais longe
-04:48=Porque é que têm as toupeiras de ser|sempre as vitimas? Dar marteladas em ouriços pode ser igualmente|divertido! Uma boa martelada rapidamente|limpa um terço da vida de um ouriço e enterra-o no solo!|Ataque: Activar
+04:47=Duplica a diversão com estas duas minas autocolantes!|Utiliza-as para atacar ou defender. É contigo!|Ataque: Deixa pressionado para disparar mais longe
+04:48=Porque é que têm as toupeiras de ser sempre as vitimas?|Dar marteladas em ouriços pode ser igualmente divertido!|Uma boa martelada rapidamente remove um terço da vida|de um ouriço e ainda o enterra no solo!|Ataque: Activar
 
 ; Game goal strings
 05:00=Modos de Jogo