X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_playermodel.pas;h=393e07d6fa7f426cfad03d5b3f83f82033ed89bf;hb=c0115fd1c20a28cc7e656c12fe3f724faedc7759;hp=8ffb589787109f0a7ccf680e619b87c4dea97ea4;hpb=7f57e4b195f1a553c5bb01638cc7d9908c992c88;p=d2df-sdl.git diff --git a/src/game/g_playermodel.pas b/src/game/g_playermodel.pas index 8ffb589..393e07d 100644 --- a/src/game/g_playermodel.pas +++ b/src/game/g_playermodel.pas @@ -108,15 +108,8 @@ type FColor: TRGB; FCurrentAnimation: Byte; FAnimState: TAnimationState; - FPainSounds: TModelSoundArray; - FDieSounds: TModelSoundArray; - FSlopSound: Byte; FCurrentWeapon: Byte; FFlag: Byte; - FFlagPoint: TDFPoint; - FFlagAngle: SmallInt; - FFlagAnim: TAnimation; // !!! TAnimationState - FFire: Boolean; FFireCounter: Byte; FID: Integer; @@ -126,7 +119,8 @@ type procedure SetColor(Red, Green, Blue: Byte); procedure SetWeapon(Weapon: Byte); procedure SetFlag(Flag: Byte); - procedure SetFire(Fire: Boolean); + procedure SetFire (Fire: Boolean); + function GetFire (): Boolean; function PlaySound(SoundType, Level: Byte; X, Y: Integer): Boolean; procedure Update(); @@ -134,24 +128,16 @@ type function GetName (): String; published - property Fire: Boolean read FFire; property Direction: TDirection read FDirection write FDirection; property Animation: Byte read FCurrentAnimation; property Weapon: Byte read FCurrentWeapon; public property Color: TRGB read FColor write FColor; - property AnimState: TAnimationState read FAnimState; property CurrentAnimation: Byte read FCurrentAnimation; - property CurrentWeapon: Byte read FCurrentWeapon; - property Flag: Byte read FFlag; - property FlagAnim: TAnimation read FFlagAnim; - property FlagAngle: SmallInt read FFlagAngle; - property FlagPoint: TDFPoint read FFlagPoint; - property ID: Integer read FID; end; @@ -658,16 +644,8 @@ begin with PlayerModelsArray[a] do begin - Result.FPainSounds := PainSounds; - Result.FDieSounds := DieSounds; - Result.FSlopSound := SlopSound; - - Result.FFlagPoint := FlagPoint; - Result.FFlagAngle := FlagAngle; Result.FID := a; - Result.ChangeAnimation(A_STAND, True); - Break; end; end; @@ -847,33 +825,33 @@ begin if SoundType = MODELSOUND_PAIN then begin - if FPainSounds = nil then Exit; + if PlayerModelsArray[FID].PainSounds = nil then Exit; - for a := 0 to High(FPainSounds) do - if FPainSounds[a].Level = Level then + for a := 0 to High(PlayerModelsArray[FID].PainSounds) do + if PlayerModelsArray[FID].PainSounds[a].Level = Level then begin - SetLength(TempArray, Length(TempArray)+1); - TempArray[High(TempArray)] := FPainSounds[a].ID; + SetLength(TempArray, Length(TempArray) + 1); + TempArray[High(TempArray)] := PlayerModelsArray[FID].PainSounds[a].ID; end; end else begin - if (Level in [2, 3, 5]) and (FSlopSound > 0) then + if (Level in [2, 3, 5]) and (PlayerModelsArray[FID].SlopSound > 0) then begin g_Sound_PlayExAt('SOUND_MONSTER_SLOP', X, Y); - if FSlopSound = 1 then + if PlayerModelsArray[FID].SlopSound = 1 then begin Result := True; Exit; end; end; - if FDieSounds = nil then Exit; + if PlayerModelsArray[FID].DieSounds = nil then Exit; - for a := 0 to High(FDieSounds) do - if FDieSounds[a].Level = Level then + for a := 0 to High(PlayerModelsArray[FID].DieSounds) do + if PlayerModelsArray[FID].DieSounds[a].Level = Level then begin - SetLength(TempArray, Length(TempArray)+1); - TempArray[High(TempArray)] := FDieSounds[a].ID; + SetLength(TempArray, Length(TempArray) + 1); + TempArray[High(TempArray)] := PlayerModelsArray[FID].DieSounds[a].ID; end; if (TempArray = nil) and (Level = 5) then begin @@ -897,36 +875,27 @@ begin FColor.B := Blue; end; -procedure TPlayerModel.SetFire(Fire: Boolean); -begin - FFire := Fire; - if FFire then - FFireCounter := PlayerModelsArray[FID].ModelSpeed[A_ATTACK] * PlayerModelsArray[FID].Anim[TDirection.D_RIGHT, A_ATTACK].Frames - else - FFireCounter := 0 -end; - -procedure TPlayerModel.SetFlag(Flag: Byte); -var - tid: DWORD; -begin - FFlag := Flag; - - FFlagAnim.Free(); - FFlagAnim := nil; + procedure TPlayerModel.SetFire (Fire: Boolean); + begin + if Fire then + FFireCounter := PlayerModelsArray[FID].ModelSpeed[A_ATTACK] * PlayerModelsArray[FID].Anim[TDirection.D_RIGHT, A_ATTACK].Frames + else + FFireCounter := 0 + end; - case Flag of - FLAG_RED: g_Frames_Get(tid, 'FRAMES_FLAG_RED'); - FLAG_BLUE: g_Frames_Get(tid, 'FRAMES_FLAG_BLUE'); - else Exit; + function TPlayerModel.GetFire (): Boolean; + begin + Result := FFireCounter > 0 end; - FFlagAnim := TAnimation.Create(tid, True, 8); -end; + procedure TPlayerModel.SetFlag (Flag: Byte); + begin + FFlag := Flag + end; - procedure TPlayerModel.SetWeapon(Weapon: Byte); + procedure TPlayerModel.SetWeapon (Weapon: Byte); begin - FCurrentWeapon := Weapon; + FCurrentWeapon := Weapon end; function TPlayerModel.GetBlood (): TModelBlood; @@ -943,12 +912,8 @@ end; begin if FAnimState <> nil then FAnimState.Update; - if FFlagAnim <> nil then - FFlagAnim.Update; if FFireCounter > 0 then Dec(FFireCounter) - else - FFire := False end; procedure g_PlayerModel_LoadAll;