# HG changeset patch # User koda # Date 1264542951 0 # Node ID b9ca1bfca24f92274c7547d0cb1f0bde2a090410 # Parent 0e4e0db79e2a6ec633163832bbf375ba46104776 complete the replacement of init/free wrappers for every unit iphone frontend smaller fixes symbol TOUCHINPUT deprecated revision of some sdl1.3 code diff -r 0e4e0db79e2a -r b9ca1bfca24f cocoaTouch/GameSetup.m --- a/cocoaTouch/GameSetup.m Tue Jan 26 04:13:37 2010 +0000 +++ b/cocoaTouch/GameSetup.m Tue Jan 26 21:55:51 2010 +0000 @@ -20,7 +20,7 @@ -(id) init { self = [super init]; srandom(time(NULL)); - ipcPort = (random() % 64541) + 1024 ;//(arc4random() % ((unsigned)64541)) + 1024; + ipcPort = (random() % 64541) + 1025; NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"]; self.systemSettings = [[NSDictionary alloc] initWithContentsOfFile:filePath]; //should check it exists @@ -67,7 +67,7 @@ /* Open a connection with the IP provided (listen on the host's port) */ if (!(sd = SDLNet_TCP_Open(&ip))) { - NSLog(@"SDLNet_TCP_Open: %s\n", SDLNet_GetError()); + NSLog(@"SDLNet_TCP_Open: %s %\n", SDLNet_GetError(), ipcPort); exit(EXIT_FAILURE); } diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/CCHandlers.inc --- a/hedgewars/CCHandlers.inc Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/CCHandlers.inc Tue Jan 26 21:55:51 2010 +0000 @@ -598,6 +598,9 @@ {$IFDEF DEBUGFILE} buf: array[byte] of char; {$ENDIF} +{$IFDEF SDL13} + window: PSDL_Window; +{$ENDIF} begin if Length(s) = 0 then cFullScreen:= not cFullScreen else cFullScreen:= s = '1'; @@ -607,10 +610,6 @@ {$ENDIF} flags:= SDL_OPENGL;// or SDL_RESIZABLE; -{$IFDEF IPHONEOS} - // remove the topbar from the iPhone - flags:= flags or SDL_NOFRAME; -{$ENDIF} if cFullScreen then begin @@ -628,9 +627,21 @@ SDL_FreeSurface(SDLPrimSurface); end; +{$IFDEF SDL13} + window:= SDL_CreateWindow('Hedgewars', 0, 0, cScreenWidth, cScreenHeight, + SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN + {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS{$ENDIF}); + SDL_CreateRenderer(window, -1, 0); + PixelFormat:= nil; + + SDL_SetRenderDrawColor(0, 0, 0, 255); + SDL_RenderFill(nil); + SDL_RenderPresent(); +{$ELSE} SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags); SDLTry(SDLPrimSurface <> nil, true); PixelFormat:= SDLPrimSurface^.format; +{$ENDIF} {$IFDEF DEBUGFILE} AddFileLog('Setting up OpenGL...'); diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/PascalExports.pas --- a/hedgewars/PascalExports.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/PascalExports.pas Tue Jan 26 21:55:51 2010 +0000 @@ -19,7 +19,6 @@ {$IFDEF IPHONEOS} // called by pascal code, they deal with the objc code -procedure IPH_CreateWindowsFromObjc; cdecl; external; function IPH_getDocumentsPath: PChar; cdecl; external; procedure IPH_showControls; cdecl; external; diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/SDLh.pas --- a/hedgewars/SDLh.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/SDLh.pas Tue Jan 26 21:55:51 2010 +0000 @@ -327,12 +327,8 @@ {* SDL_Event type definition *} {$IFDEF SDL13} - //UPDATE TSDL_Window AND TSDL_Texture before usage!!! - PSDL_Window = ^TSDL_Window; - TSDL_Window = LongInt; //not true anymore - - PSDL_Texture = ^TSDL_Texture; - TSDL_Texture = LongInt; //not true anymore + PSDL_Window = pointer; + PSDL_Texture = pointer; TSDL_WindowEvent = record type_: byte; @@ -631,6 +627,10 @@ function SDL_SaveBMP_RW(surface: PSDL_Surface; dst: PSDL_RWops; freedst: LongInt): LongInt; cdecl; external SDLLibName; {$IFDEF SDL13} +function SDL_CreateWindow(title: PChar; x,y,w,h, flags: LongInt): PSDL_Window; cdecl; external SDLLibName; +function SDL_CreateRenderer(window: PSDL_Window; index, flags: LongInt): LongInt; cdecl; external SDLLibName; +function SDL_SetRenderDrawColor(r,g,b,a: byte): LongInt; cdecl; external SDLLibName; + function SDL_RenderFill(rect: PSDL_Rect): LongInt; function SDL_RenderFillRect(rect: PSDL_Rect): LongInt; cdecl; external SDLLibName; function SDL_RenderClear: LongInt; cdecl; external SDLLibName; diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/hwengine.pas Tue Jan 26 21:55:51 2010 +0000 @@ -133,6 +133,9 @@ end; SDL_GL_SwapBuffers(); +{$IFDEF SDL13} + SDL_RenderPresent(); +{$ENDIF} {$IFNDEF IPHONEOS} // not going to make captures on the iPhone if flagMakeCapture then @@ -156,20 +159,18 @@ ControllerClose(); SendKB(); CloseIPC(); - freeEverything(); TTF_Quit(); {$IFDEF SDL13}SDL_VideoQuit();{$ENDIF} SDL_Quit(); + freeEverything(); exit(); end; /////////////////// procedure MainLoop; -var PrevTime, - CurrTime: Longword; +var PrevTime, CurrTime: Longword; {$IFNDEF IPHONEOS}event: TSDL_Event;{$ENDIF} begin - PrevTime:= SDL_GetTicks; repeat {$IFNDEF IPHONEOS} @@ -235,7 +236,7 @@ cInitHeight:= cScreenHeight; cBitsStr:= '32'; val(cBitsStr, cBits); - cFullScreen:= true; + cFullScreen:= false; cVSyncInUse:= true; val('8', cTimerInterval); PathPrefix:= 'Data'; @@ -261,15 +262,15 @@ SDL_EnableUNICODE(1); WriteToConsole('Init SDL_ttf... '); - SDLTry(TTF_Init <> -1, true); + SDLTry(TTF_Init() <> -1, true); WriteLnToConsole(msgOK); - ShowMainWindow; + ShowMainWindow(); - AddProgress; + AddProgress(); - ControllerInit; // has to happen before InitKbdKeyTable to map keys - InitKbdKeyTable; + ControllerInit(); // has to happen before InitKbdKeyTable to map keys + InitKbdKeyTable(); if recordFileName = '' then InitIPC; @@ -287,11 +288,11 @@ s:= 'eproto ' + inttostr(cNetProtoVersion); SendIPCRaw(@s[0], Length(s) + 1); // send proto version - InitTeams; - AssignStores; + InitTeams(); + AssignStores(); if isSoundEnabled then - InitSound; + InitSound(); isDeveloperMode:= false; @@ -307,29 +308,69 @@ init_uConsts(); init_uMisc(); init_uConsole(); // MUST happen after uMisc + + init_uAI(); + //uAIActions does not need initialization + //uAIAmmoTests does not need initialization + init_uAIMisc(); + init_uAmmos(); + init_uChat(); + init_uCollisions(); + //uFloat does not need initialization + //uGame does not need initialization + init_uGears(); + init_uIO(); + init_uKeys(); + init_uLand(); + //uLandGraphics does not need initialization + //uLandObjects does not need initialization + //uLandTemplates does not need initialization + //uLandTexture does not need initialization + //uLocale does not need initialization + init_uRandom(); + //uSHA does not need initialization + init_uSound(); + init_uStats(); init_uStore(); init_uTeams(); - init_uGears(); + init_uTriggers(); init_uVisualGears(); - init_uLand(); - init_uIO(); init_uWorld(); - init_uRandom; - init_uTriggers; - end; procedure freeEverything; begin - //free_uConts(); not necessary + free_uWorld(); + free_uVisualGears(); //stub + free_uTriggers(); //stub + free_uTeams(); + free_uStore(); + free_uStats(); //stub + free_uSound(); //stub + //uSHA does not need to be freed + free_uRandom(); //stub + //uLocale does not need to be freed + //uLandTemplates does not need to be freed + //uLandTexture does not need to be freed + //uLandObjects does not need to be freed + //uLandGraphics does not need to be freed + free_uLand(); + free_uKeys(); //stub + free_uIO(); + free_uGears(); + //uGame does not need to be freed + //uFloat does not need to be freed + free_uCollisions(); + free_uChat(); + free_uAmmos(); + free_uAIMisc(); //stub + //uAIAmmoTests does not need to be freed + //uAIActions does not need to be freed + free_uAI(); //stub + free_uConsole(); free_uMisc(); - free_uTeams(); - free_uAmmos(); - free_uGears(); - free_uVisualGears(); - free_uLand(); - //free_uWorld(); not necessary + free_uConsts(); //stub end; {$IFNDEF IPHONEOS} @@ -525,6 +566,6 @@ if GameType = gmtLandPreview then GenLandPreview() else Game(); - ExitCode := 0; + ExitCode:= 0; {$ENDIF} end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/options.inc --- a/hedgewars/options.inc Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/options.inc Tue Jan 26 21:55:51 2010 +0000 @@ -25,8 +25,8 @@ {$IFDEF IPHONEOS} {$DEFINE SDL13} {$DEFINE GLES11} - {$DEFINE TOUCHINPUT} {$DEFINE LOWRES} + {$DEFINE SDL_MIXER_NEWER} {$DEFINE SDL_IMAGE_NEWER} {$MODE OBJFPC} {$ENDIF} @@ -37,8 +37,3 @@ { $DEFINE TRACEAIACTIONS} { $DEFINE COUNTTICKS} {$ENDIF} - -{$IFDEF TOUCHINPUT} - {$DEFINE SDL13} -{$ENDIF} - diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uAI.pas --- a/hedgewars/uAI.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uAI.pas Tue Jan 26 21:55:51 2010 +0000 @@ -22,6 +22,9 @@ interface uses uFloat; +procedure init_uAI; +procedure free_uAI; + procedure ProcessBot; procedure FreeActionsList; @@ -33,7 +36,7 @@ CanUseAmmo: array [TAmmoType] of boolean; StopThinking: boolean; ThinkThread: TThreadID; - hasThread: LongInt = 0; + hasThread: LongInt; procedure FreeActionsList; begin @@ -342,4 +345,14 @@ or (TurnTimeLeft <= cStopThinkTime) then StopThinking:= true end; +procedure init_uAI; +begin + hasThread:= 0; +end; + +procedure free_uAI; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uAIMisc.pas Tue Jan 26 21:55:51 2010 +0000 @@ -37,6 +37,9 @@ JumpType: TJumpType; end; +procedure init_uAIMisc; +procedure free_uAIMisc; + procedure FillTargets; procedure FillBonuses(isAfterAttack: boolean); procedure AwareOfExplosion(x, y, r: LongInt); @@ -54,22 +57,25 @@ implementation uses uTeams, uMisc, uLand, uCollisions; -const KillScore = 200; - MAXBONUS = 1024; - friendlyfactor: LongInt = 300; type TBonus = record X, Y: LongInt; Radius: LongInt; Score: LongInt; end; -var bonuses: record + +const KillScore = 200; + MAXBONUS = 1024; + +var friendlyfactor: LongInt = 300; + KnownExplosion: record + X, Y, Radius: LongInt + end = (X: 0; Y: 0; Radius: 0); + bonuses: record Count: Longword; ar: array[0..Pred(MAXBONUS)] of TBonus; end; - KnownExplosion: record - X, Y, Radius: LongInt - end = (X: 0; Y: 0; Radius: 0); + procedure FillTargets; var i, t: Longword; @@ -459,4 +465,17 @@ else AIrndSign:= - num end; +procedure init_uAIMisc; +begin + friendlyfactor:= 300; + KnownExplosion.X:= 0; + KnownExplosion.Y:= 0; + KnownExplosion.Radius:= 0; +end; + +procedure free_uAIMisc; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uAmmos.pas --- a/hedgewars/uAmmos.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uAmmos.pas Tue Jan 26 21:55:51 2010 +0000 @@ -22,7 +22,9 @@ interface uses uConsts, uTeams; +procedure init_uAmmos; procedure free_uAmmos; + procedure AddAmmoStore(s: shortstring); procedure AssignStores; procedure AddAmmo(var Hedgehog: THedgehog; ammo: TAmmoType); @@ -35,13 +37,14 @@ procedure SetWeapon(weap: TAmmoType); procedure DisableSomeWeapons; -var shoppa: Boolean = false; +var shoppa: boolean; implementation uses uMisc, uGears, uWorld, uLocale, uConsole; + type TAmmoCounts = array[TAmmoType] of Longword; var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo; - StoreCnt: Longword = 0; + StoreCnt: Longword; procedure FillAmmoStore(Ammo: PHHAmmo; var cnts: TAmmoCounts); var mi: array[0..cMaxSlotIndex] of byte; @@ -317,11 +320,17 @@ if (Ammoz[t].Ammo.Propz and ammoprop_NotBorder) <> 0 then Ammoz[t].Probability:= 0 end; +procedure init_uAmmos; +begin + shoppa:= false; + StoreCnt:= 0 +end; + procedure free_uAmmos; var i: LongWord; begin -for i:= 0 to Pred(StoreCnt) do Dispose(StoresList[i]); -StoreCnt:= 0 + for i:= 0 to Pred(StoreCnt) do Dispose(StoresList[i]); + StoreCnt:= 0 end; end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uChat.pas --- a/hedgewars/uChat.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uChat.pas Tue Jan 26 21:55:51 2010 +0000 @@ -22,12 +22,15 @@ interface +procedure init_uChat; +procedure free_uChat; + procedure AddChatString(s: shortstring); procedure DrawChat; procedure KeyPressChat(Key: Longword); -var UserNick: shortstring = ''; - showAll: boolean = false; +var UserNick: shortstring; + showAll: boolean; implementation uses uMisc, uStore, uConsts, SDLh, uConsole, uKeys, uTeams; @@ -42,11 +45,10 @@ end; var Strs: array[0 .. MaxStrIndex] of TChatLine; - lastStr: Longword = 0; - visibleCount: Longword = 0; - - InputStr: TChatLine; - InputStrL: array[0..260] of char; // for full str + 4-byte utf-8 char + lastStr: LongWord; + visibleCount: LongWord; + InputStr: TChatLine; + InputStrL: array[0..260] of char; // for full str + 4-byte utf-8 char const colors: array[#1..#4] of TSDL_Color = ( (r:$FF; g:$FF; b:$FF; unused:$FF), // chat message [White] @@ -282,5 +284,17 @@ end end; +procedure init_uChat; +begin + lastStr:= 0; + visibleCount:= 0; + UserNick:= ''; + showAll:= false; +end; + +procedure free_uChat; +begin + +end; end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uCollisions.pas Tue Jan 26 21:55:51 2010 +0000 @@ -30,21 +30,24 @@ Count: Longword end; +procedure init_uCollisions; +procedure free_uCollisions; + procedure AddGearCI(Gear: PGear); procedure DeleteCI(Gear: PGear); -function CheckGearsCollision(Gear: PGear): PGearArray; +function CheckGearsCollision(Gear: PGear): PGearArray; -function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean; -function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): boolean; -function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean; -function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean; -function TestCollisionY(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionY(Gear: PGear; Dir: LongInt): boolean; -function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean; -function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): boolean; +function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean; +function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): boolean; implementation uses uMisc, uConsts, uLand, uLandGraphics, uConsole; @@ -55,9 +58,9 @@ end; const MAXRECTSINDEX = 511; -var Count: Longword = 0; - cinfos: array[0..MAXRECTSINDEX] of TCollisionEntry; - ga: TGearArray; +var Count: Longword; + cinfos: array[0..MAXRECTSINDEX] of TCollisionEntry; + ga: TGearArray; procedure AddGearCI(Gear: PGear); begin @@ -309,4 +312,14 @@ Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY) end; +procedure init_uCollisions; +begin + Count:= 0; +end; + +procedure free_uCollisions; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uConsts.pas Tue Jan 26 21:55:51 2010 +0000 @@ -267,7 +267,11 @@ cKeyMaxIndex = 1023; +{$IFDEF IPHONEOS} + cMaxCaptions = 3; +{$ELSE} cMaxCaptions = 4; +{$ENDIF} cSendEmptyPacketTime = 1000; @@ -376,6 +380,8 @@ FontBorder = 2; var PathPrefix: string; + Pathz: array[TPathType] of String; + CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture; const cTagsMasks : array[0..7] of byte = ( htTeamName or htName or htHealth, @@ -415,9 +421,7 @@ Name: 'DroidSansFallback.ttf') ); -var Pathz: array[TPathType] of String; - -const SpritesData: array[TSprite] of record + SpritesData: array[TSprite] of record FileName: String[14]; Path, AltPath: TPathType; Texture: PTexture; @@ -760,15 +764,13 @@ NameTex: nil; Probability: 0; NumberInCase: 0; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_Utility; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amNothing; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Utility; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amNothing; + AttackVoice: sndNone); Slot: 0; TimeAfterTurn: 0; minAngle: 0; @@ -781,15 +783,13 @@ NameTex: nil; Probability: 0; NumberInCase: 1; - Ammo: (Propz: ammoprop_Timerable or - ammoprop_Power or - ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amGrenade; - AttackVoice: sndCover); + Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amGrenade; + AttackVoice: sndCover); Slot: 1; TimeAfterTurn: 3000; minAngle: 0; @@ -802,15 +802,13 @@ NameTex: nil; Probability: 100; NumberInCase: 3; - Ammo: (Propz: ammoprop_Timerable or - ammoprop_Power or - ammoprop_AltUse; - Count: 5; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amClusterBomb; - AttackVoice: sndCover); + Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; + Count: 5; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amClusterBomb; + AttackVoice: sndCover); Slot: 1; TimeAfterTurn: 3000; minAngle: 0; @@ -823,14 +821,13 @@ NameTex: nil; Probability: 0; NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or - ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBazooka; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBazooka; + AttackVoice: sndNone); Slot: 0; TimeAfterTurn: 3000; minAngle: 0; @@ -843,15 +840,13 @@ NameTex: nil; Probability: 100; NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or - ammoprop_NeedTarget or - ammoprop_DontHold; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amUFO; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amUFO; + AttackVoice: sndNone); Slot: 0; TimeAfterTurn: 3000; minAngle: 0; @@ -865,12 +860,12 @@ Probability: 0; NumberInCase: 1; Ammo: (Propz: ammoprop_ForwMsgs; - Count: AMMO_INFINITE; - NumPerTurn: 1; - Timer: 0; - Pos: 0; - AmmoType: amShotgun; - AttackVoice: sndNone); + Count: AMMO_INFINITE; + NumPerTurn: 1; + Timer: 0; + Pos: 0; + AmmoType: amShotgun; + AttackVoice: sndNone); Slot: 2; TimeAfterTurn: 3000; minAngle: 0; @@ -883,16 +878,13 @@ NameTex: nil; Probability: 0; NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_AttackInMove or - ammoprop_NoCrosshair or - ammoprop_DontHold; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amPickHammer; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amPickHammer; + AttackVoice: sndNone); Slot: 6; TimeAfterTurn: 0; minAngle: 0; @@ -905,14 +897,13 @@ NameTex: nil; Probability: 0; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amSkip; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSkip; + AttackVoice: sndNone); Slot: 8; TimeAfterTurn: 0; minAngle: 0; @@ -925,15 +916,13 @@ NameTex: nil; Probability: 100; NumberInCase: 3; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_AttackInMove or - ammoprop_AltAttack; - Count: 5; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amRope; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_AltAttack; + Count: 5; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amRope; + AttackVoice: sndNone); Slot: 7; TimeAfterTurn: 0; minAngle: 0; @@ -946,16 +935,13 @@ NameTex: nil; Probability: 100; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_AttackInMove or - ammoprop_DontHold or - ammoprop_AltUse; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amMine; - AttackVoice: sndLaugh); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amMine; + AttackVoice: sndLaugh); Slot: 4; TimeAfterTurn: 5000; minAngle: 0; @@ -969,12 +955,12 @@ Probability: 20; NumberInCase: 2; Ammo: (Propz: 0; - Count: 3; - NumPerTurn: 3; - Timer: 0; - Pos: 0; - AmmoType: amDEagle; - AttackVoice: sndNone); + Count: 3; + NumPerTurn: 3; + Timer: 0; + Pos: 0; + AmmoType: amDEagle; + AttackVoice: sndNone); Slot: 2; TimeAfterTurn: 3000; minAngle: 0; @@ -987,16 +973,13 @@ NameTex: nil; Probability: 100; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_AttackInMove or - ammoprop_DontHold or - ammoprop_AltUse; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amDynamite; - AttackVoice: sndLaugh); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amDynamite; + AttackVoice: sndLaugh); Slot: 4; TimeAfterTurn: 5000; minAngle: 0; @@ -1009,15 +992,13 @@ NameTex: nil; Probability: 0; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_ForwMsgs or - ammoprop_AttackInMove; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amFirePunch; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amFirePunch; + AttackVoice: sndNone); Slot: 3; TimeAfterTurn: 3000; MinAngle: 0; @@ -1031,12 +1012,12 @@ Probability: 0; NumberInCase: 1; Ammo: (Propz: ammoprop_NoCrosshair; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amWhip; - AttackVoice: sndNone); + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amWhip; + AttackVoice: sndNone); Slot: 3; TimeAfterTurn: 3000; MinAngle: 0; @@ -1050,12 +1031,12 @@ Probability: 100; NumberInCase: 1; Ammo: (Propz: ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBaseballBat; - AttackVoice: sndNone); + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBaseballBat; + AttackVoice: sndNone); Slot: 3; TimeAfterTurn: 5000; minAngle: 0; @@ -1073,12 +1054,12 @@ ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltAttack; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amParachute; - AttackVoice: sndNone); + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amParachute; + AttackVoice: sndNone); Slot: 7; TimeAfterTurn: 0; minAngle: 0; @@ -1096,12 +1077,12 @@ ammoprop_AttackingPut or ammoprop_DontHold or ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amAirAttack; - AttackVoice: sndIncoming); + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amAirAttack; + AttackVoice: sndIncoming); Slot: 5; TimeAfterTurn: 0; minAngle: 0; @@ -1119,12 +1100,12 @@ ammoprop_AttackingPut or ammoprop_DontHold or ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amMineStrike; - AttackVoice: sndNone); + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amMineStrike; + AttackVoice: sndNone); Slot: 5; TimeAfterTurn: 0; minAngle: 0; @@ -1138,12 +1119,12 @@ Probability: 100; NumberInCase: 2; Ammo: (Propz: ammoprop_ForwMsgs; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBlowTorch; - AttackVoice: sndNone); + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBlowTorch; + AttackVoice: sndNone); Slot: 6; TimeAfterTurn: 3000; minAngle: 768; @@ -1156,15 +1137,13 @@ NameTex: nil; Probability: 150; NumberInCase: 3; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amGirder; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_NeedTarget or ammoprop_AttackingPut; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amGirder; + AttackVoice: sndNone); Slot: 6; TimeAfterTurn: 3000; minAngle: 0; @@ -1182,12 +1161,12 @@ ammoprop_NeedTarget or ammoprop_AttackingPut or ammoprop_DontHold; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amTeleport; - AttackVoice: sndNone); + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amTeleport; + AttackVoice: sndNone); Slot: 7; TimeAfterTurn: 0; minAngle: 0; @@ -1200,15 +1179,13 @@ NameTex: nil; Probability: 100; NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_NoCrosshair or - ammoprop_DontHold; - Count: 3; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amSwitch; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold; + Count: 3; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSwitch; + AttackVoice: sndNone); Slot: 8; TimeAfterTurn: 0; minAngle: 0; @@ -1222,12 +1199,12 @@ Probability: 100; NumberInCase: 4; Ammo: (Propz: 0; - Count: 4; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amMortar; - AttackVoice: sndNone); + Count: 4; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amMortar; + AttackVoice: sndNone); Slot: 1; TimeAfterTurn: 3000; minAngle: 0; @@ -1240,15 +1217,13 @@ NameTex: nil; Probability: 100; NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_DontHold or - ammoprop_AttackInMove; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amKamikaze; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amKamikaze; + AttackVoice: sndNone); Slot: 3; TimeAfterTurn: 0; minAngle: 0; @@ -1261,15 +1236,13 @@ NameTex: nil; Probability: 100; NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_NoCrosshair or - ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amCake; - AttackVoice: sndLaugh); + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amCake; + AttackVoice: sndLaugh); Slot: 4; TimeAfterTurn: 0; minAngle: 0; @@ -1283,12 +1256,12 @@ Probability: 100; NumberInCase: 1; Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amSeduction; - AttackVoice: sndNone); + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSeduction; + AttackVoice: sndNone); Slot: 2; TimeAfterTurn: 0; minAngle: 0; @@ -1301,15 +1274,13 @@ NameTex: nil; Probability: 400; NumberInCase: 1; - Ammo: (Propz: ammoprop_Timerable or - ammoprop_Power or - ammoprop_AltUse; - Count: 0; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amWatermelon; - AttackVoice: sndMelon); + Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; + Count: 0; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amWatermelon; + AttackVoice: sndMelon); Slot: 1; TimeAfterTurn: 3000; minAngle: 0; @@ -1322,14 +1293,13 @@ NameTex: nil; Probability: 400; NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or - ammoprop_AltUse; - Count: 0; - NumPerTurn: 0; - Timer: 5000; - Pos: 0; - AmmoType: amHellishBomb; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: 0; + NumPerTurn: 0; + Timer: 5000; + Pos: 0; + AmmoType: amHellishBomb; + AttackVoice: sndNone); Slot: 4; TimeAfterTurn: 3000; minAngle: 0; @@ -1347,12 +1317,12 @@ ammoprop_AttackingPut or ammoprop_DontHold or ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amNapalm; - AttackVoice: sndNone); + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amNapalm; + AttackVoice: sndNone); Slot: 5; TimeAfterTurn: 0; minAngle: 0; @@ -1365,14 +1335,13 @@ NameTex: nil; Probability: 300; NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or - ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amDrill; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amDrill; + AttackVoice: sndNone); Slot: 0; TimeAfterTurn: 3000; minAngle: 0; @@ -1385,14 +1354,13 @@ NameTex: nil; Probability: 400; NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_DontHold; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 5001; - Pos: 0; - AmmoType: amBallgun; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 5001; + Pos: 0; + AmmoType: amBallgun; + AttackVoice: sndNone); Slot: 2; TimeAfterTurn: 0; minAngle: 0; @@ -1408,12 +1376,12 @@ Ammo: (Propz: ammoprop_ForwMsgs{ or ammoprop_DontHold or ammoprop_AltAttack}; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amRCPlane; - AttackVoice: sndNone); + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amRCPlane; + AttackVoice: sndNone); Slot: 6; TimeAfterTurn: 0; minAngle: 0; @@ -1426,16 +1394,13 @@ NameTex: nil; Probability: 20; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amLowGravity; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltUse or ammoprop_Utility; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amLowGravity; + AttackVoice: sndNone); Slot: 8; TimeAfterTurn: 0; minAngle: 0; @@ -1448,16 +1413,13 @@ NameTex: nil; Probability: 15; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amExtraDamage; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltUse or ammoprop_Utility; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amExtraDamage; + AttackVoice: sndNone); Slot: 8; TimeAfterTurn: 0; minAngle: 0; @@ -1470,16 +1432,13 @@ NameTex: nil; Probability: 20; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amInvulnerable; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltUse or ammoprop_Utility; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amInvulnerable; + AttackVoice: sndNone); Slot: 8; TimeAfterTurn: 0; minAngle: 0; @@ -1492,16 +1451,13 @@ NameTex: nil; Probability: 30; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amExtraTime; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltUse or ammoprop_Utility; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amExtraTime; + AttackVoice: sndNone); Slot: 7; TimeAfterTurn: 0; minAngle: 0; @@ -1514,16 +1470,13 @@ NameTex: nil; Probability: 15; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amLaserSight; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltUse or ammoprop_Utility; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amLaserSight; + AttackVoice: sndNone); Slot: 7; TimeAfterTurn: 0; minAngle: 0; @@ -1536,16 +1489,13 @@ NameTex: nil; Probability: 15; NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amVampiric; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltUse or ammoprop_Utility; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amVampiric; + AttackVoice: sndNone); Slot: 6; TimeAfterTurn: 0; minAngle: 0; @@ -1559,12 +1509,12 @@ Probability: 20; NumberInCase: 2; Ammo: (Propz: 0; - Count: 2; - NumPerTurn: 1; - Timer: 0; - Pos: 0; - AmmoType: amSniperRifle; - AttackVoice: sndNone); + Count: 2; + NumPerTurn: 1; + Timer: 0; + Pos: 0; + AmmoType: amSniperRifle; + AttackVoice: sndNone); Slot: 2; TimeAfterTurn: 3000; minAngle: 0; @@ -1582,12 +1532,12 @@ ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_AltAttack; - Count: 1; - NumPerTurn: 1; - Timer: 0; - Pos: 0; - AmmoType: amJetpack; - AttackVoice: sndNone); + Count: 1; + NumPerTurn: 1; + Timer: 0; + Pos: 0; + AmmoType: amJetpack; + AttackVoice: sndNone); Slot: 3; TimeAfterTurn: 3000; minAngle: 0; @@ -1601,14 +1551,13 @@ NameTex: nil; Probability: 0; NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or - ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amMolotov; - AttackVoice: sndNone); + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amMolotov; + AttackVoice: sndNone); Slot: 1; TimeAfterTurn: 3000; minAngle: 0; @@ -1648,9 +1597,8 @@ ); -var CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture; - procedure init_uConsts; +procedure free_uConsts; implementation @@ -1680,4 +1628,9 @@ Pathz:= cPathz; end; +procedure free_uConsts; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uGame.pas --- a/hedgewars/uGame.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uGame.pas Tue Jan 26 21:55:51 2010 +0000 @@ -62,7 +62,7 @@ end; gmtSave: begin RestoreTeamsFromSave; -{$IFNDEF TOUCHINPUT} +{$IFNDEF IPHONEOS} SetBinds(CurrentTeam^.Binds); {$ENDIF} //CurrentHedgehog^.Gear^.Message:= 0; <- produces bugs with further save restoring and demos diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uGears.pas --- a/hedgewars/uGears.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uGears.pas Tue Jan 26 21:55:51 2010 +0000 @@ -21,10 +21,10 @@ unit uGears; interface uses SDLh, uConsts, uFloat; -const AllInactive: boolean = false; - PrvInactive: boolean = false; -type PGear = ^TGear; + +type + PGear = ^TGear; TGearStepProcedure = procedure (Gear: PGear); TGear = record NextGear, PrevGear: PGear; @@ -57,8 +57,19 @@ TriggerId: Longword; FlightTime: Longword; uid: Longword - end; + end; +var AllInactive: boolean; + PrvInactive: boolean; + CurAmmoGear: PGear; + GearsList: PGear; + KilledHHs: Longword; + SuddenDeathDmg: Boolean; + SpeechType: Longword; + SpeechText: shortstring; + TrainingTargetGear: PGear; + skipFlag: boolean; + procedure init_uGears; procedure free_uGears; function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear; @@ -74,15 +85,6 @@ procedure InsertGearToList(Gear: PGear); procedure RemoveGearFromList(Gear: PGear); -var CurAmmoGear: PGear; - GearsList: PGear; - KilledHHs: Longword; - SuddenDeathDmg: Boolean; - SpeechType: Longword; - SpeechText: shortstring; - TrainingTargetGear: PGear; - skipFlag: boolean; - implementation uses uWorld, uMisc, uStore, uConsole, uSound, uTeams, uRandom, uCollisions, uLand, uIO, uLandGraphics, uAIMisc, uLocale, uAI, uAmmos, uTriggers, uStats, uVisualGears, @@ -1534,13 +1536,13 @@ procedure FreeGearsList; var t, tt: PGear; begin -tt:= GearsList; -GearsList:= nil; -while tt <> nil do + tt:= GearsList; + GearsList:= nil; + while tt <> nil do begin - t:= tt; - tt:= tt^.NextGear; - Dispose(t) + t:= tt; + tt:= tt^.NextGear; + Dispose(t) end; end; @@ -2051,6 +2053,9 @@ SpeechType:= 1; TrainingTargetGear:= nil; skipFlag:= false; + + AllInactive:= false; + PrvInactive:= false; end; procedure free_uGears; diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uIO.pas --- a/hedgewars/uIO.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uIO.pas Tue Jan 26 21:55:51 2010 +0000 @@ -22,10 +22,12 @@ interface uses SDLh; -const ipcPort: Word = 0; -var hiTicks: Word; +var ipcPort: Word; + hiTicks: Word; procedure init_uIO; +procedure free_uIO; + procedure SendIPC(s: shortstring); procedure SendIPCXY(cmd: char; X, Y: SmallInt); procedure SendIPCRaw(p: pointer; len: Longword); @@ -352,6 +354,12 @@ hiTicks:= 0; SendEmptyPacketTicks:= 0; + ipcPort:= 0; +end; + +procedure free_uIO; +begin + end; end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uKeys.pas --- a/hedgewars/uKeys.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uKeys.pas Tue Jan 26 21:55:51 2010 +0000 @@ -25,6 +25,9 @@ type TBinds = array[0..cKeyMaxIndex] of shortstring; type TKeyboardState = array[0..cKeyMaxIndex] of Byte; +procedure init_uKeys; +procedure free_uKeys; + function KeyNameToCode(name: string): word; procedure ProcessKbd; procedure ResetKbd; @@ -41,27 +44,23 @@ procedure ControllerButtonEvent(joy, button: Byte; pressed: Boolean); var hideAmmoMenu: boolean; - wheelUp: boolean = false; - wheelDown: boolean = false; -{$IFDEF TOUCHINPUT} - leftClick: boolean = false; - middleClick: boolean = false; - rightClick: boolean = false; + wheelUp: boolean; + wheelDown: boolean; +{$IFDEF IPHONEOS} + leftClick: boolean; + middleClick: boolean; + rightClick: boolean; - upKey: boolean = false; - downKey: boolean = false; - rightKey: boolean = false; - leftKey: boolean = false; + upKey: boolean; + downKey: boolean; + rightKey: boolean; + leftKey: boolean; - backspaceKey: boolean = false; - spaceKey: boolean = false; - enterKey: boolean = false; - tabKey: boolean = false; + backspaceKey: boolean; + spaceKey: boolean; + enterKey: boolean; + tabKey: boolean; - isAttacking: boolean = false; - isWalking: boolean = false; -{$ENDIF} -{$IFDEF IPHONEOS} theJoystick: PSDL_Joystick; {$ENDIF} ControllerNumControllers: Integer; @@ -130,7 +129,7 @@ tkbdn[5]:= ord(wheelUp); wheelUp:= false; wheelDown:= false; -{$IFDEF TOUCHINPUT} +{$IFDEF IPHONEOS} tkbdn[1]:= ord(leftClick); tkbdn[2]:= ord(middleClick); tkbdn[3]:= ord(rightClick); @@ -331,7 +330,7 @@ end; end; -{$IFDEF TOUCHINPUT} +{$IFDEF IPHONEOS} DefaultBinds[ 1]:= '/put'; DefaultBinds[ 3]:= 'ammomenu'; DefaultBinds[ 8]:= 'hjump'; @@ -469,8 +468,34 @@ procedure ControllerButtonEvent(joy, button: Byte; pressed: Boolean); begin - if pressed then ControllerButtons[joy][button]:= 1 else ControllerButtons[joy][button]:= 0; + if pressed then ControllerButtons[joy][button]:= 1 + else ControllerButtons[joy][button]:= 0; end; +procedure init_uKeys; +begin + wheelUp:= false; + wheelDown:= false; +{$IFDEF IPHONEOS} + leftClick:= false; + middleClick:= false; + rightClick:= false; + + upKey:= false; + downKey:= false; + rightKey:= false; + leftKey:= false; + + backspaceKey:= false; + spaceKey:= false; + enterKey:= false; + tabKey:= false; +{$ENDIF} +end; + +procedure free_uKeys; +begin + +end; end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uLandGraphics.pas Tue Jan 26 21:55:51 2010 +0000 @@ -27,9 +27,9 @@ Left, Right: LongInt; end; -function SweepDirty: boolean; -function Despeckle(X, Y: LongInt): boolean; -function CheckLandValue(X, Y: LongInt; Color: Word): boolean; +function SweepDirty: boolean; +function Despeckle(X, Y: LongInt): boolean; +function CheckLandValue(X, Y: LongInt; Color: Word): boolean; procedure DrawExplosion(X, Y, Radius: LongInt); procedure DrawHLinesExplosions(ar: PRangeArray; Radius: LongInt; y, dY: LongInt; Count: Byte); procedure DrawTunnel(X, Y, dX, dY: hwFloat; ticks, HalfWidth: LongInt); diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uLandTexture.pas --- a/hedgewars/uLandTexture.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uLandTexture.pas Tue Jan 26 21:55:51 2010 +0000 @@ -115,10 +115,13 @@ procedure FreeLand; var x, y: LongInt; begin -for x:= 0 to LANDTEXARW -1 do - for y:= 0 to LANDTEXARH - 1 do - with LandTextures[x, y] do - FreeTexture(tex) + for x:= 0 to LANDTEXARW -1 do + for y:= 0 to LANDTEXARH - 1 do + with LandTextures[x, y] do + begin + FreeTexture(tex); + tex:= nil; + end; end; end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uLocale.pas --- a/hedgewars/uLocale.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uLocale.pas Tue Jan 26 21:55:51 2010 +0000 @@ -62,8 +62,8 @@ trammo[sidNothing]:= ' '; for e:= Low(TEventId) to High(TEventId) do first[e]:= true; -{$I-} //iochecks off -filemode:=0; //readonly +{$I-} // iochecks off +filemode:= 0; // readonly Assign(f, FileName); reset(f); // if the locale does not exist, fallback to the default one diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uMisc.pas Tue Jan 26 21:55:51 2010 +0000 @@ -581,7 +581,7 @@ cGravity := cMaxWindSpeed; cDamageModifier := _1; TargetPoint := cTargetPointRef; - TextureList := nil; + TextureList := nil; // int, longint longword and byte CursorMovementX := 0; @@ -681,7 +681,6 @@ if IOResult = 0 then break; end; {$ENDIF} - {$I+} {$ENDIF} @@ -689,13 +688,13 @@ procedure free_uMisc; begin -while TextureList <> nil do FreeTexture(TextureList); -//uRandom.DumpBuffer; + //uRandom.DumpBuffer; + while TextureList <> nil do FreeTexture(TextureList); {$IFDEF DEBUGFILE} -writeln(f, 'halt at ', GameTicks, ' ticks. TurnTimeLeft = ', TurnTimeLeft); -flush(f); -close(f); + writeln(f, 'halt at ', GameTicks, ' ticks. TurnTimeLeft = ', TurnTimeLeft); + flush(f); + close(f); {$ENDIF} end; diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uRandom.pas --- a/hedgewars/uRandom.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uRandom.pas Tue Jan 26 21:55:51 2010 +0000 @@ -24,6 +24,8 @@ {$INCLUDE "proto.inc"} procedure init_uRandom; +procedure free_uRandom; + procedure SetRandomSeed(Seed: shortstring); function GetRandom: hwFloat; overload; function GetRandom(m: LongWord): LongWord; overload; @@ -99,4 +101,9 @@ n:= 54; end; +procedure free_uRandom; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uSound.pas --- a/hedgewars/uSound.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uSound.pas Tue Jan 26 21:55:51 2010 +0000 @@ -28,6 +28,11 @@ chunks: array [TSound] of PMixChunk; end; +var MusicFN: shortstring; + +procedure init_uSound; +procedure free_uSound; + procedure InitSound; procedure ReleaseSound; procedure SoundLoad; @@ -38,20 +43,18 @@ procedure ResumeMusic; procedure StopSound(snd: TSound); function ChangeVolume(voldelta: LongInt): LongInt; - function AskForVoicepack(name: shortstring): Pointer; -var MusicFN: shortstring = ''; implementation uses uMisc, uConsole; const chanTPU = 12; var Volume: LongInt; - lastChan: array [TSound] of LongInt; - voicepacks: array[0..cMaxTeams] of TVoicepack; - defVoicepack: PVoicepack; - Mus: PMixMusic = nil; + lastChan: array [TSound] of LongInt; + voicepacks: array[0..cMaxTeams] of TVoicepack; + defVoicepack: PVoicepack; + Mus: PMixMusic = nil; function AskForVoicepack(name: shortstring): Pointer; var i: Longword; @@ -226,5 +229,15 @@ Mix_ResumeMusic(Mus); end; +procedure init_uSound; +begin + MusicFN:=''; +end; + +procedure free_uSound; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uStats.pas --- a/hedgewars/uStats.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uStats.pas Tue Jan 26 21:55:51 2010 +0000 @@ -34,16 +34,18 @@ FinishedTurns: Longword; end; +var TotalRounds: LongInt; + FinishedTurnsTotal: LongInt; + +procedure init_uStats; +procedure free_uStats; + procedure AmmoUsed(am: TAmmoType); procedure HedgehogDamaged(Gear: PGear); procedure Skipped; procedure TurnReaction; procedure SendStats; -var - TotalRounds: LongInt = -1; - FinishedTurnsTotal: LongInt = -1; - implementation uses uTeams, uSound, uMisc, uLocale, uWorld; var DamageGiven : Longword = 0; @@ -217,4 +219,15 @@ if KilledHHs > 0 then SendStat(siKilledHHs, inttostr(KilledHHs)); end; +procedure init_uStats; +begin + TotalRounds:= -1; + FinishedTurnsTotal:= -1; +end; + +procedure free_uStats; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uStore.pas --- a/hedgewars/uStore.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uStore.pas Tue Jan 26 21:55:51 2010 +0000 @@ -45,6 +45,8 @@ {$ENDIF} procedure init_uStore; +procedure free_uStore; + procedure StoreLoad; procedure StoreRelease; procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt); @@ -1185,21 +1187,15 @@ WriteToConsole(msgLoading + 'progress sprite: '); texsurf:= LoadImage(Pathz[ptGraphics] + '/Progress', ifCritical or ifTransparent); -{$IFDEF SDL13notworking} - ProgrTex:= SDL_CreateTextureFromSurface(0, texsurf); -{$ELSE} + ProgrTex:= Surface2Tex(texsurf, false); -{$ENDIF} + squaresize:= texsurf^.w shr 1; numsquares:= texsurf^.h div squaresize; SDL_FreeSurface(texsurf); end; -{$IFDEF SDL13notworking} - TryDo(ProgrTex <> 0, 'Error - Progress Texure is 0!', true); -{$ELSE} TryDo(ProgrTex <> nil, 'Error - Progress Texure is nil!', true); -{$ENDIF} glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_TEXTURE_2D); @@ -1210,25 +1206,22 @@ r.w:= squaresize; r.h:= squaresize; -{$IFDEF SDL13notworking} - SDL_RenderCopy(ProgrTex, nil, @r); -{$ELSE} DrawFromRect( -squaresize div 2, (cScreenHeight - squaresize) shr 1, @r, ProgrTex); -{$ENDIF} + glDisable(GL_TEXTURE_2D); SDL_GL_SwapBuffers(); +{$IFDEF SDL13} + SDL_RenderPresent(); +{$ENDIF} inc(Step); + end; procedure FinishProgress; begin WriteLnToConsole('Freeing progress surface... '); -{$IFDEF SDL13notworking} - SDL_DestroyTexture(ProgrTex); -{$ELSE} FreeTexture(ProgrTex); -{$ENDIF} {$IFDEF IPHONEOS} // show overlay buttons @@ -1319,4 +1312,9 @@ {$ENDIF} end; +procedure free_uStore; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uTeams.pas Tue Jan 26 21:55:51 2010 +0000 @@ -234,7 +234,7 @@ {$IFDEF DEBUGFILE}AddFileLog('Wind = '+FloatToStr(cWindSpeed));{$ENDIF} ApplyAmmoChanges(CurrentHedgehog^); -{$IFNDEF TOUCHINPUT} +{$IFNDEF IPHONEOS} if not CurrentTeam^.ExtDriven then SetBinds(CurrentTeam^.Binds); {$ENDIF} diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uTriggers.pas --- a/hedgewars/uTriggers.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uTriggers.pas Tue Jan 26 21:55:51 2010 +0000 @@ -26,6 +26,7 @@ type TTrigAction = (taSpawnGear, taSuccessFinish, taFailFinish); procedure init_uTriggers; +procedure free_uTriggers; procedure AddTriggerSpawner(id, Ticks, Lives: Longword; GearType: TGearType; X, Y: LongInt; GearTriggerId: Longword); procedure AddTriggerSuccess(id, Ticks, Lives: Longword); procedure AddTriggerFail(id, Ticks, Lives: Longword); @@ -149,4 +150,9 @@ TriggerList:= nil; end; +procedure free_uTriggers; +begin + +end; + end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uVisualGears.pas Tue Jan 26 21:55:51 2010 +0000 @@ -49,6 +49,7 @@ procedure init_uVisualGears; procedure free_uVisualGears; + function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear; procedure ProcessVisualGears(Steps: Longword); procedure DrawVisualGears(Layer: LongWord); @@ -561,7 +562,7 @@ procedure free_uVisualGears; begin -while VisualGearsList <> nil do DeleteVisualGear(VisualGearsList); + while VisualGearsList <> nil do DeleteVisualGear(VisualGearsList); end; end. diff -r 0e4e0db79e2a -r b9ca1bfca24f hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Tue Jan 26 04:13:37 2010 +0000 +++ b/hedgewars/uWorld.pas Tue Jan 26 21:55:51 2010 +0000 @@ -22,17 +22,7 @@ interface uses SDLh, uGears, uConsts, uFloat, uRandom; -const WorldDx: LongInt = -512; - WorldDy: LongInt = -256; -procedure init_uWorld; -procedure InitWorld; -procedure DrawWorld(Lag: LongInt); -procedure AddCaption(s: string; Color: Longword; Group: TCapGroup); - -{$IFDEF COUNTTICKS} -var cntTicks: LongWord; -{$ENDIF} var FollowGear: PGear; WindBarWidth: LongInt; bShowAmmoMenu: boolean; @@ -40,6 +30,18 @@ bShowFinger: boolean; Frames: Longword; WaterColor, DeepWaterColor: TSDL_Color; + WorldDx: LongInt; + WorldDy: LongInt; +{$IFDEF COUNTTICKS} + cntTicks: LongWord; +{$ENDIF} + +procedure init_uWorld; +procedure free_uWorld; + +procedure InitWorld; +procedure DrawWorld(Lag: LongInt); +procedure AddCaption(s: string; Color: Longword; Group: TCapGroup); implementation uses uStore, uMisc, uTeams, uIO, uConsole, uKeys, uLocale, uSound, uAmmos, uVisualGears, uChat, uLandTexture, uLand, @@ -49,11 +51,6 @@ GL; {$ENDIF} -const FPS: Longword = 0; - CountTicks: Longword = 0; - SoundTimerTicks: Longword = 0; - prevPoint: TPoint = (X: 0; Y: 0); - type TCaptionStr = record Tex: PTexture; EndTime: LongWord; @@ -64,6 +61,10 @@ AMxShift, SlotsNum: LongInt; tmpSurface: PSDL_Surface; fpsTexture: PTexture; + FPS: Longword; + CountTicks: Longword; + SoundTimerTicks: Longword; + prevPoint: TPoint; procedure InitWorld; var i, t: LongInt; @@ -505,19 +506,19 @@ if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then i:= 48 else i:= 8; {$ENDIF} -for grp:= Low(TCapGroup) to High(TCapGroup) do - with Captions[grp] do - if Tex <> nil then - begin - DrawCentered(0, i, Tex); - inc(i, Tex^.h + 2); - if EndTime <= RealTicks then - begin - FreeTexture(Tex); - Tex:= nil; - EndTime:= 0 - end - end; + for grp:= Low(TCapGroup) to High(TCapGroup) do + with Captions[grp] do + if Tex <> nil then + begin + DrawCentered(0, i, Tex); + inc(i, Tex^.h + 2); + if EndTime <= RealTicks then + begin + FreeTexture(Tex); + Tex:= nil; + EndTime:= 0 + end; + end; // Teams Healths for t:= 0 to Pred(TeamsCount) do @@ -753,8 +754,21 @@ bSelected:= false; bShowFinger:= false; Frames:= 0; + WorldDx:= -512; + WorldDy:= -256; + + FPS:= 0; + CountTicks:= 0; + SoundTimerTicks:= 0; + prevPoint.X:= 0; + prevPoint.Y:= 0; FillChar(Captions, sizeof(Captions), 0) end; +procedure free_uWorld; +begin + +end; + end.