# HG changeset patch # User unc0rr # Date 1304347151 -14400 # Node ID 6533e5450a21f0edabc020558e694459e48bf159 # Parent 9fa96377a69c031b922544e57b8c9f2ea392cec8# Parent c7000a6b397b06e1686e4349af3aa3b879dd046e Merge cursor_issues into default diff -r c7000a6b397b -r 6533e5450a21 .hgtags --- a/.hgtags Mon May 02 18:37:57 2011 +0400 +++ b/.hgtags Mon May 02 18:39:11 2011 +0400 @@ -1,16 +1,6 @@ 04a613bab65c75977b63ab7f54c58cceac707dd0 hedgewars-0.8.1-r1 -19ba506ed86b6306f7cd01b2613069391f4e34e6 0.9.13 -52c7981594f6bc3a7ed1b297b80cb38082015401 0.9.4 -69f1dc50a1faddf1a52080600a3f4771bedd45c1 0.9.2 -7d8d62a5566ed84688c596b8f55e83cfd171683e 0.9.12 -89d0fa6734af24e439755b102080cf6268c50aa6 0.9.11 -8c3e71880f492c61086c2ca2541b52f82a5957b0 0.9.9.2 97b2d242e2a1ade7fc17fd0d4a856c612ad975ca hedgewars-0.8.0 -990f341a2332a7bef0822b313854544228375e36 0.9.10 -9b2abea1071f83da8fbda70b0bf6cec0ca481b07 0.9.3 bb56f0682655b18f229be97085a409e3c76f578e hedgewars-0.8.1 -fee68e3a303998fdfcc69f74775dc84a36f587fb 0.9.9 -fee68e3a303998fdfcc69f74775dc84a36f587fb 0.9.9.1 81db3c85784b4f35c7ff1ef9a5d64f5bdd383f08 Hedgewars-iOS-1.0 3620607258cdc1213dce20cb6ad7872f6b8085e0 Hedgewars-iOS-1.0.1 adffb668f06e265b45d1e4aedc283e6f4e5ba7e8 Hedgewars-iOS-1.1 @@ -20,3 +10,15 @@ 5ea3d182415e4327e7584b1aa68197931d232ac3 Hedgewars-iOS-1.2.2 ae71dff40ecc405a55647b0f52f628674c1ebb51 0.9.14.1-release ae0c6c35414ddc120c8ae94035f287f03a752e78 Hedgewars-iOS-1.2.3 +19ba506ed86b6306f7cd01b2613069391f4e34e6 0.9.13-release +7d8d62a5566ed84688c596b8f55e83cfd171683e 0.9.12-release +89d0fa6734af24e439755b102080cf6268c50aa6 0.9.11-release +990f341a2332a7bef0822b313854544228375e36 0.9.10-release +8c3e71880f492c61086c2ca2541b52f82a5957b0 0.9.9.2-release +040cfeac98127d35f22ac8433b06b09e50d5b28f 0.9.8-release +44cc464de8f320e8018ed9e9cbb7281fd42d0a00 0.9.7-release +a32f1eed51a6df2513d471cb849eb110545c50b3 0.9.6-release +6bc4389344c7d7f41bcbc46f986c1dcf88846189 0.9.5-release +52c7981594f6bc3a7ed1b297b80cb38082015401 0.9.4-release +9b2abea1071f83da8fbda70b0bf6cec0ca481b07 0.9.3-release +69f1dc50a1faddf1a52080600a3f4771bedd45c1 0.9.2-release diff -r c7000a6b397b -r 6533e5450a21 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/GSHandlers.inc Mon May 02 18:39:11 2011 +0400 @@ -4870,16 +4870,16 @@ not TryPlaceOnLand(TargetPoint.X - SpritesData[sprHHTelepMask].Width div 2, TargetPoint.Y - SpritesData[sprHHTelepMask].Height div 2, sprHHTelepMask, 0, false, false) then - begin + begin HHGear^.Message := HHGear^.Message and not gmAttack; HHGear^.State := HHGear^.State and not gstAttacking; HHGear^.State := HHGear^.State or gstHHChooseTarget; DeleteGear(Gear); isCursorVisible := true; PlaySound(sndDenied) - end + end else - begin + begin DeleteCI(HHGear); SetAllHHToActive; PlaySound(sndPlaced); @@ -4894,7 +4894,49 @@ hog^.Gear:= nil; Gear^.Hedgehog := hog; Gear^.doStep := @doStepStructure; - end; + end; TargetPoint.X := NoPointX; end; +procedure doStepTardis(Gear: PGear); +(*var + i, x, y: LongInt; + dX, dY: hwFloat; + Fire: PGear; + vg: PVisualGear;*) +begin + if (Gear^.State and gstTmpFlag) = 0 then dec(Gear^.Timer); + if (Gear^.Timer = 0) and (CurAmmoGear = Gear) then + begin + if (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then + begin + DeleteGear(Gear); + exit + end; + if Gear = CurAmmoGear then CurAmmoGear := nil; + Gear^.Hedgehog:= CurrentHedgehog; + RemoveGearFromList(CurrentHedgehog^.Gear); + CurrentHedgehog^.Gear^.Z := cHHZ; + CurrentHedgehog^.Gear^.Active := false; + CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstHHDriven; + CurrentHedgehog^.GearHidden:= CurrentHedgehog^.Gear; + CurrentHedgehog^.Gear:= nil; + Gear^.State:= Gear^.State or gstTmpFlag; + Gear^.Timer:= GameTicks + GetRandom(cHedgehogTurnTime*TeamsCount)+cHedgehogTurnTime; + end + else if (((Gear^.State and gstTmpFlag) <> 0) and (Gear^.Timer = GameTicks)) or SuddenDeath then + begin + if Gear^.Hedgehog <> nil then + begin + Gear^.Hedgehog^.Gear:= Gear^.Hedgehog^.GearHidden; + Gear^.Hedgehog^.GearHidden:= nil; + FindPlace(Gear^.Hedgehog^.Gear, false, 0, LAND_WIDTH,true); + InsertGearToList(Gear^.Hedgehog^.Gear); + Gear^.Hedgehog^.Gear^.State:= (Gear^.Hedgehog^.Gear^.State or gstTmpFlag or gstAttacked) and not gstHHDriven; + Gear^.Hedgehog^.Gear^.Timer:= $FF; + Gear^.Hedgehog^.Gear^.doStep:= @doStepHedgehogReturn; + SetAllHHToActive; + end; + DeleteGear(Gear) + end +end; diff -r c7000a6b397b -r 6533e5450a21 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/HHHandlers.inc Mon May 02 18:39:11 2011 +0400 @@ -317,6 +317,7 @@ amDrillStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer); //amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0); amStructure: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtStructure, 0, _0, _0, 0); + amTardis: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000); end; // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement @@ -996,3 +997,13 @@ doStepHedgehogDriven(Gear) end; end; + +procedure doStepHedgehogReturn(Gear: PGear); +begin +if (Gear^.Timer > 0) and ((GameTicks mod 20) = 0) then dec(Gear^.Timer) +else if (Gear^.Timer = 0) then + begin + Gear^.doStep:= @doStepHedgehog; + Gear^.State:= Gear^.State and not gstTmpFlag; + end +end; diff -r c7000a6b397b -r 6533e5450a21 hedgewars/PascalExports.pas --- a/hedgewars/PascalExports.pas Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/PascalExports.pas Mon May 02 18:39:11 2011 +0400 @@ -28,8 +28,7 @@ * http://en.wikipedia.org/wiki/X86_calling_conventions#cdecl *) interface -uses uTypes, uConsts, uVariables, GLunit, uKeys, uSound, uAmmos, uUtils, - uCommands, uMobile; +uses uTypes, uConsts, uVariables, GLunit, uKeys, uSound, uAmmos, uUtils, uCommands; {$INCLUDE "config.inc"} procedure HW_versionInfo(netProto: PLongInt; versionStr: PPChar); cdecl; export; @@ -201,7 +200,6 @@ // equivalent to esc+y; when closeFrontend = true the game exits after memory cleanup procedure HW_terminate(closeFrontend: boolean); cdecl; export; begin - {$IFDEF IPHONEOS}setGameRunning(false);{$ENDIF} alsoShutdownFrontend:= closeFrontend; ParseCommand('forcequit', true); end; diff -r c7000a6b397b -r 6533e5450a21 hedgewars/uFloat.pas --- a/hedgewars/uFloat.pas Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/uFloat.pas Mon May 02 18:39:11 2011 +0400 @@ -192,7 +192,7 @@ function hwFloat2Float (const i: hwFloat) : extended; begin hwFloat2Float:= i.QWordValue / $100000000; -if i.isNegative then hwFloat2Float:=hwFloat2Float*-1; +if i.isNegative then hwFloat2Float:= -hwFloat2Float; end; operator + (const z1, z2: hwFloat) z : hwFloat; diff -r c7000a6b397b -r 6533e5450a21 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/uGears.pas Mon May 02 18:39:11 2011 +0400 @@ -72,6 +72,7 @@ procedure AfterAttack; forward; procedure HedgehogStep(Gear: PGear); forward; procedure doStepHedgehogMoving(Gear: PGear); forward; +procedure doStepHedgehogReturn(Gear: PGear); forward; procedure HedgehogChAngle(HHGear: PGear); forward; procedure ShotgunShot(Gear: PGear); forward; procedure PickUp(HH, Gear: PGear); forward; @@ -147,8 +148,8 @@ @doStepSnowball, @doStepSnowflake, @doStepPlaceStructure, - @doStepLandGun - ); + @doStepLandGun, + @doStepTardis); procedure InsertGearToList(Gear: PGear); var tmp, ptmp: PGear; @@ -1042,7 +1043,6 @@ Gear^.LastDamage := AttackerHog; Gear^.Hedgehog^.Team^.Clan^.Flawless:= false; - uStats.HedgehogDamaged(Gear, AttackerHog); HHHurt(Gear^.Hedgehog, Source); AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, Gear^.Hedgehog^.Team^.Clan^.Color); tmpDmg:= min(Damage, max(0,Gear^.Health-Gear^.Damage)); @@ -1084,6 +1084,8 @@ Gear^.Hedgehog:= AttackerHog; end; inc(Gear^.Damage, Damage); + + uStats.HedgehogDamaged(Gear, AttackerHog); ScriptCall('onGearDamage', Gear^.UID, Damage); end; diff -r c7000a6b397b -r 6533e5450a21 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/uGearsRender.pas Mon May 02 18:39:11 2011 +0400 @@ -227,6 +227,13 @@ Tint($FF, $FF, $FF, $FF) end; + if (CurAmmoGear <> nil) and + (CurrentHedgehog^.Gear <> nil) and + (CurrentHedgehog^.Gear = Gear) and + (CurAmmoGear^.Kind = gtTardis) then Tint($FF, $FF, $FF, CurAmmoGear^.Timer div 20) + // probably will need a new flag for this + else if (Gear^.State and gstTmpFlag <> 0) then Tint($FF, $FF, $FF, $FF-Gear^.Timer); + if ((Gear^.State and gstWinner) <> 0) and ((CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtPickHammer)) then begin diff -r c7000a6b397b -r 6533e5450a21 hedgewars/uTypes.pas --- a/hedgewars/uTypes.pas Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/uTypes.pas Mon May 02 18:39:11 2011 +0400 @@ -97,7 +97,7 @@ gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45 gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51 gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector, // 56 - gtNapalmBomb, gtSnowball, gtFlake, gtStructure, gtLandGun); // 61 + gtNapalmBomb, gtSnowball, gtFlake, gtStructure, gtLandGun, gtTardis); // 62 // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.) TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, diff -r c7000a6b397b -r 6533e5450a21 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Mon May 02 18:37:57 2011 +0400 +++ b/hedgewars/uVariables.pas Mon May 02 18:39:11 2011 +0400 @@ -2041,8 +2041,6 @@ NumberInCase: 1; Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut or ammoprop_Utility or ammoprop_DontHold; Count: 2; diff -r c7000a6b397b -r 6533e5450a21 project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Mon May 02 18:37:57 2011 +0400 +++ b/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Mon May 02 18:39:11 2011 +0400 @@ -67,17 +67,17 @@ [self viewWillAppear:YES]; [container addSubview:self.view]; - if (placingPoint.x == -1 && placingPoint.y == -1) + if (placingPoint.x == -1 || placingPoint.y == -1) placingPoint = container.center; - if (IS_DUALHEAD() == NO) - self.view.center = CGPointMake(placingPoint.y, placingPoint.x); - else { + if (IS_DUALHEAD() == YES) { UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) self.view.center = CGPointMake(placingPoint.y, placingPoint.x); else self.view.center = CGPointMake(placingPoint.x, placingPoint.y); - } + } else + self.view.center = CGPointMake(placingPoint.y, placingPoint.x); + self.isVisible = YES; if (IS_IPAD() == NO) HW_pause(); @@ -116,7 +116,7 @@ [self.view addSubview:self.captionLabel]; [caption release]; - UILabel *description = [[UILabel alloc] initWithFrame:CGRectMake(x+2, y+20, 415, 53)]; + UILabel *description = [[UILabel alloc] initWithFrame:CGRectMake(x+2, self.view.frame.size.height-50, 415, 53)]; description.backgroundColor = [UIColor clearColor]; description.textColor = [UIColor whiteColor]; description.text = DEFAULT_DESCRIPTION; @@ -281,7 +281,7 @@ if (theButton.tag > 41) y = 5; else - y = (HW_getNumberOfWeapons()/BTNS_PER_ROW)*44 + 18; + y = (HW_getNumberOfWeapons()/BTNS_PER_ROW)*40; self.nameLabel.frame = CGRectMake(x, y, 200, 20); self.captionLabel.frame = CGRectMake(x+200, y, 220, 20); diff -r c7000a6b397b -r 6533e5450a21 project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m --- a/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Mon May 02 18:37:57 2011 +0400 +++ b/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Mon May 02 18:39:11 2011 +0400 @@ -57,11 +57,8 @@ #pragma mark - // overlay with controls, become visible later, with a transparency effect since the sdlwindow is not yet created -(void) displayOverlayLater:(id) object { - NSDictionary *dict = (NSDictionary *)object; - - [self.overlayController setUseClassicMenu:[[dict objectForKey:@"menu"] boolValue]]; - [self.overlayController setInitialOrientation:[[dict objectForKey:@"orientation"] intValue]]; - objcExportsInit(self.overlayController); + [self.overlayController setUseClassicMenu:[[self.systemSettings objectForKey:@"menu"] boolValue]]; + [self.overlayController setInitialOrientation:self.parentController.interfaceOrientation]; UIWindow *gameWindow = (IS_DUALHEAD() ? [HedgewarsAppDelegate sharedAppDelegate].uiwindow : [[UIApplication sharedApplication] keyWindow]); [gameWindow addSubview:self.overlayController.view]; @@ -129,6 +126,8 @@ [localeString release]; [ipcString release]; + objcExportsInit(self.overlayController); + // this is the pascal fuction that starts the game, wrapped around isInGame [HedgewarsAppDelegate sharedAppDelegate].isInGame = YES; Game(gameArgs); @@ -154,12 +153,7 @@ blackView.alpha = 1; // prepare options for overlay and add it to the future sdl uiwindow - NSDictionary *overlayOptions = [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:self.parentController.interfaceOrientation],@"orientation", - [self.systemSettings objectForKey:@"menu"],@"menu", - nil]; - [self performSelector:@selector(displayOverlayLater:) withObject:overlayOptions afterDelay:3]; - [overlayOptions release]; + [self performSelector:@selector(displayOverlayLater:) withObject:nil afterDelay:3]; // SYSTEMS ARE GO!! [self startGameEngine]; diff -r c7000a6b397b -r 6533e5450a21 project_files/HedgewarsMobile/Classes/ObjcExports.m --- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Mon May 02 18:37:57 2011 +0400 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Mon May 02 18:39:11 2011 +0400 @@ -101,6 +101,9 @@ } void saveBeganSynching() { + savedGame = YES; + stopSpinningProgress(); + overlay_instance.view.backgroundColor = [UIColor blackColor]; overlay_instance.view.alpha = 0.75; overlay_instance.view.userInteractionEnabled = NO; @@ -114,9 +117,6 @@ [overlay_instance.savesIndicator startAnimating]; [overlay_instance.view addSubview:overlay_instance.savesIndicator]; [overlay_instance.savesIndicator release]; - - savedGame = YES; - stopSpinningProgress(); } void saveFinishedSynching() { @@ -131,7 +131,6 @@ [overlay_instance.savesIndicator performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1]; gameRunning = YES; - savedGame = NO; } void updateVisualsNewTurn(void) { diff -r c7000a6b397b -r 6533e5450a21 project_files/HedgewarsMobile/Classes/OverlayViewController.m --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m Mon May 02 18:37:57 2011 +0400 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m Mon May 02 18:39:11 2011 +0400 @@ -42,9 +42,6 @@ #pragma mark rotation -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { - // don't rotate until the game is running for performance and synchronization with the sdlview - if (isGameRunning() == NO) - return (interfaceOrientation == (UIInterfaceOrientation) self.initialOrientation); return rotationManager(interfaceOrientation); } @@ -117,7 +114,6 @@ self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90)); break; default: - DLog(@"Nope"); break; } [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; @@ -664,7 +660,6 @@ initialDistanceForPinching = currentDistanceOfPinching; break; default: - DLog(@"Nope"); break; } }