X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=dee10aa191af47131130ed12d2b102299d1a2d60;hb=82108dd50fb12ef54f0cd04891901782781fe442;hp=962db668f7e716e36fc086c51cd19779f391d3b6;hpb=987c4a835a103345b59937e8e1be8524a6228712;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 962db66..dee10aa 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -282,6 +282,7 @@ type procedure ReleaseKeys(); procedure SetModel(ModelName: String); procedure SetColor(Color: TRGB); + function GetColor(): TRGB; procedure SetWeapon(W: Byte); function IsKeyPressed(K: Byte): Boolean; function GetKeys(): Byte; @@ -319,7 +320,7 @@ type procedure DrawPickup(); procedure DrawRulez(); procedure DrawAim(); - procedure DrawIndicator(); + procedure DrawIndicator(Color: TRGB); procedure DrawBubble(); procedure DrawGUI(); procedure Update(); virtual; @@ -554,7 +555,8 @@ var gFly: Boolean = False; gAimLine: Boolean = False; gChatBubble: Byte = 0; - gPlayerIndicator: Boolean = True; + gPlayerIndicator: Integer = 1; + gPlayerIndicatorStyle: Integer = 0; gNumBots: Word = 0; gLMSPID1: Word = 0; gLMSPID2: Word = 0; @@ -2034,6 +2036,11 @@ begin if FModel <> nil then FModel.Color := Color; end; +function TPlayer.GetColor(): TRGB; +begin + result := FModel.Color; +end; + procedure TPlayer.SwitchTeam; begin if g_Game_IsClient then @@ -2321,23 +2328,39 @@ begin inherited; end; -procedure TPlayer.DrawIndicator(); +procedure TPlayer.DrawIndicator(Color: TRGB); var indX, indY: Integer; indW, indH: Word; + nW, nH: Byte; ID: DWORD; + c: TRGB; begin if FAlive then - begin - if g_Texture_Get('TEXTURE_PLAYER_INDICATOR', ID) then + case gPlayerIndicatorStyle of + 0: + begin + if g_Texture_Get('TEXTURE_PLAYER_INDICATOR', ID) then + begin + e_GetTextureSize(ID, @indW, @indH); + indX := FObj.X + FObj.Rect.X + (FObj.Rect.Width - indW) div 2; + indY := FObj.Y - indH; + + c := e_Colors; + e_Colors := Color; + e_Draw(ID, indX, indY, 0, True, False); + e_Colors := c; + end; + end; + + 1: begin - e_GetTextureSize(ID, @indW, @indH); - indX := FObj.X + FObj.Rect.X + (FObj.Rect.Width - indW) div 2; - indY := FObj.Y; - e_Draw(ID, indX, indY - indH, 0, True, False); + e_TextureFontGetSize(gStdFont, nW, nH); + indX := FObj.X + FObj.Rect.X + (FObj.Rect.Width - Length(FName) * nW) div 2; + indY := FObj.Y - nH; + e_TextureFontPrintEx(indX, indY, FName, gStdFont, Color.R, Color.G, Color.B, 1.0, True); end; end; - //e_TextureFontPrint(indX, indY, FName, gStdFont); // Shows player name overhead end; procedure TPlayer.DrawBubble(); @@ -7887,4 +7910,6 @@ end; begin conRegVar('cheat_berserk_autoswitch', @gBerserkAutoswitch, 'autoswitch to fist when berserk pack taken', '', true, true); + conRegVar('player_indicator', @gPlayerIndicator, 'Draw indicator only for current player, also for teammates, or not at all', 'Draw indicator only for current player, also for teammates, or not at all'); + conRegVar('player_indicator_style', @gPlayerIndicatorStyle, 'Visual appearance of indicator', 'Visual appearance of indicator'); end.