X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=1ec0ccd237bc56c85df03b3d26c9d286fe1131d5;hb=2f7fe10481b508addb4db1243d34c3aff4fb525e;hp=1d036616a4884835132d9bde3643baae1f5f80c8;hpb=84a25340ac602b712defba27d7e8a421a211914c;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 1d03661..1ec0ccd 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -50,6 +50,7 @@ const A_SHELLS = 1; A_ROCKETS = 2; A_CELLS = 3; + A_HIGH = 3; K_SIMPLEKILL = 0; K_HARDKILL = 1; @@ -114,9 +115,9 @@ type CurrWeap: Byte; NextWeap: WORD; NextWeapDelay: Byte; - Ammo: Array [A_BULLETS..A_CELLS] of Word; - MaxAmmo: Array [A_BULLETS..A_CELLS] of Word; - Weapon: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Boolean; + Ammo: Array [A_BULLETS..A_HIGH] of Word; + MaxAmmo: Array [A_BULLETS..A_HIGH] of Word; + Weapon: Array [WP_FIRST..WP_LAST] of Boolean; Rulez: Set of R_ITEM_BACKPACK..R_BERSERK; WaitRecall: Boolean; end; @@ -216,13 +217,13 @@ type public FDamageBuffer: Integer; - FAmmo: Array [A_BULLETS..A_CELLS] of Word; - FMaxAmmo: Array [A_BULLETS..A_CELLS] of Word; - FWeapon: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Boolean; + FAmmo: Array [A_BULLETS..A_HIGH] of Word; + FMaxAmmo: Array [A_BULLETS..A_HIGH] of Word; + FWeapon: Array [WP_FIRST..WP_LAST] of Boolean; FRulez: Set of R_ITEM_BACKPACK..R_BERSERK; FBerserk: Integer; FMegaRulez: Array [MR_SUIT..MR_MAX] of DWORD; - FReloading: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Word; + FReloading: Array [WP_FIRST..WP_LAST] of Word; FTime: Array [T_RESPAWN..T_FLAGCAP] of DWORD; FKeys: Array [KEY_LEFT..KEY_CHAT] of TKeyState; FColor: TRGB; @@ -341,9 +342,9 @@ type FlyPrecision: Byte; Cover: Byte; CloseJump: Byte; - WeaponPrior: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte; - CloseWeaponPrior: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte; - //SafeWeaponPrior: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte; + WeaponPrior: Array [WP_FIRST..WP_LAST] of Byte; + CloseWeaponPrior: Array [WP_FIRST..WP_LAST] of Byte; + //SafeWeaponPrior: Array [WP_FIRST..WP_LAST] of Byte; end; TAIFlag = record @@ -511,9 +512,9 @@ type fly_precision: Byte; cover: Byte; close_jump: Byte; - w_prior1: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte; - w_prior2: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte; - w_prior3: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte; + w_prior1: Array [WP_FIRST..WP_LAST] of Byte; + w_prior2: Array [WP_FIRST..WP_LAST] of Byte; + w_prior3: Array [WP_FIRST..WP_LAST] of Byte; end; const @@ -549,19 +550,19 @@ const DIFFICULT_HARD: TDifficult = (DiagFire: 255; InvisFire: 255; DiagPrecision: 255; FlyPrecision: 255; Cover: 255; CloseJump: 255; WeaponPrior:(0,0,0,0,0,0,0,0,0,0); CloseWeaponPrior:(0,0,0,0,0,0,0,0,0,0)); - WEAPON_PRIOR1: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte = + WEAPON_PRIOR1: Array [WP_FIRST..WP_LAST] of Byte = (WEAPON_SUPERPULEMET, WEAPON_SHOTGUN2, WEAPON_SHOTGUN1, WEAPON_CHAINGUN, WEAPON_PLASMA, WEAPON_ROCKETLAUNCHER, WEAPON_BFG, WEAPON_PISTOL, WEAPON_SAW, WEAPON_KASTET); - WEAPON_PRIOR2: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte = + WEAPON_PRIOR2: Array [WP_FIRST..WP_LAST] of Byte = (WEAPON_SUPERPULEMET, WEAPON_BFG, WEAPON_ROCKETLAUNCHER, WEAPON_SHOTGUN2, WEAPON_PLASMA, WEAPON_SHOTGUN1, WEAPON_CHAINGUN, WEAPON_PISTOL, WEAPON_SAW, WEAPON_KASTET); - //WEAPON_PRIOR3: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte = + //WEAPON_PRIOR3: Array [WP_FIRST..WP_LAST] of Byte = // (WEAPON_SUPERPULEMET, WEAPON_BFG, WEAPON_PLASMA, // WEAPON_SHOTGUN2, WEAPON_CHAINGUN, WEAPON_SHOTGUN1, // WEAPON_SAW, WEAPON_ROCKETLAUNCHER, WEAPON_PISTOL, WEAPON_KASTET); - WEAPON_RELOAD: Array [WEAPON_KASTET..WEAPON_SUPERPULEMET] of Byte = + WEAPON_RELOAD: Array [WP_FIRST..WP_LAST] of Byte = (5, 2, 6, 18, 36, 2, 12, 2, 14, 2); PLAYER_SIGNATURE = $52594C50; // 'PLYR' @@ -822,16 +823,16 @@ begin // Îáúåêò èãðîêà: Obj_LoadState(@gPlayers[a].FObj, Mem); // Òåêóùåå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(gPlayers[a].FAmmo[i]); // Ìàêñèìàëüíîå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(gPlayers[a].FMaxAmmo[i]); // Íàëè÷èå îðóæèÿ: - for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for i := WP_FIRST to WP_LAST do Mem.ReadBoolean(gPlayers[a].FWeapon[i]); // Âðåìÿ ïåðåçàðÿäêè îðóæèÿ: - for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for i := WP_FIRST to WP_LAST do Mem.ReadWord(gPlayers[a].FReloading[i]); // Íàëè÷èå ðþêçàêà: Mem.ReadByte(b); @@ -997,7 +998,7 @@ begin else FDifficult := DIFFICULT_HARD; end; - for a := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for a := WP_FIRST to WP_LAST do begin FDifficult.WeaponPrior[a] := WEAPON_PRIOR1[a]; FDifficult.CloseWeaponPrior[a] := WEAPON_PRIOR2[a]; @@ -1075,7 +1076,7 @@ begin FDifficult.Cover := BotList[num].cover; FDifficult.CloseJump := BotList[num].close_jump; - for a := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for a := WP_FIRST to WP_LAST do begin FDifficult.WeaponPrior[a] := BotList[num].w_prior1[a]; FDifficult.CloseWeaponPrior[a] := BotList[num].w_prior2[a]; @@ -3083,7 +3084,7 @@ begin if Srv then begin // Âûáðîñ îðóæèÿ: - for a := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for a := WP_FIRST to WP_LAST do if FWeapon[a] then begin case a of @@ -3376,9 +3377,13 @@ procedure TPlayer.RealizeCurrentWeapon(); i: Byte; begin result := false; - if FBFGFireCounter <> -1 then exit; - if FTime[T_SWITCH] > gTime then exit; - for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do if FReloading[i] > 0 then exit; + if FBFGFireCounter <> -1 then + exit; + if FTime[T_SWITCH] > gTime then + exit; + for i := WP_FIRST to WP_LAST do + if FReloading[i] > 0 then + exit; result := true; end; @@ -4103,7 +4108,7 @@ begin FAir := AIR_DEF; FJetFuel := 0; - for a := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for a := WP_FIRST to WP_LAST do begin FWeapon[a] := False; FReloading[a] := 0; @@ -4116,7 +4121,7 @@ begin FModel.SetWeapon(FCurrWeap); - for b := A_BULLETS to A_CELLS do + for b := A_BULLETS to A_HIGH do FAmmo[b] := 0; FAmmo[A_BULLETS] := 50; @@ -4688,7 +4693,7 @@ begin FJetSoundFly.PlayAt(FObj.X, FObj.Y); end; - for b := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for b := WP_FIRST to WP_LAST do if FReloading[b] > 0 then if FNoReload then FReloading[b] := 0 @@ -5388,16 +5393,16 @@ begin // Îáúåêò èãðîêà: Obj_SaveState(@FObj, Mem); // Òåêóùåå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.WriteWord(FAmmo[i]); // Ìàêñèìàëüíîå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.WriteWord(FMaxAmmo[i]); // Íàëè÷èå îðóæèÿ: - for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for i := WP_FIRST to WP_LAST do Mem.WriteBoolean(FWeapon[i]); // Âðåìÿ ïåðåçàðÿäêè îðóæèÿ: - for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for i := WP_FIRST to WP_LAST do Mem.WriteWord(FReloading[i]); // Íàëè÷èå ðþêçàêà: if R_ITEM_BACKPACK in FRulez then @@ -5528,16 +5533,16 @@ begin // Îáúåêò èãðîêà: Obj_LoadState(@FObj, Mem); // Òåêóùåå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(FAmmo[i]); // Ìàêñèìàëüíîå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(FMaxAmmo[i]); // Íàëè÷èå îðóæèÿ: - for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for i := WP_FIRST to WP_LAST do Mem.ReadBoolean(FWeapon[i]); // Âðåìÿ ïåðåçàðÿäêè îðóæèÿ: - for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for i := WP_FIRST to WP_LAST do Mem.ReadWord(FReloading[i]); // Íàëè÷èå ðþêçàêà: Mem.ReadByte(b); @@ -5600,8 +5605,8 @@ begin Exit; end; - for a := WEAPON_KASTET to WEAPON_SUPERPULEMET do FWeapon[a] := True; - for a := A_BULLETS to A_CELLS do FAmmo[a] := 30000; + for a := WP_FIRST to WP_LAST do FWeapon[a] := True; + for a := A_BULLETS to A_HIGH do FAmmo[a] := 30000; FRulez := FRulez+[R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]; end; @@ -6010,7 +6015,7 @@ begin Inc(gNumBots); - for a := WEAPON_KASTET to WEAPON_SUPERPULEMET do + for a := WP_FIRST to WP_LAST do begin FDifficult.WeaponPrior[a] := WEAPON_PRIOR1[a]; FDifficult.CloseWeaponPrior[a] := WEAPON_PRIOR2[a];