1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_CLIENT_COMPONENTS_PLAYERS_H
4#define GAME_CLIENT_COMPONENTS_PLAYERS_H
5#include <generated/protocol.h>
6
7#include <game/client/component.h>
8#include <game/client/render.h>
9
10class CPlayers : public CComponent
11{
12 friend class CGhost;
13
14 void RenderHand6(const CTeeRenderInfo *pInfo, vec2 HandPos, float HandAngle, float Alpha);
15 void RenderHand7(const CTeeRenderInfo *pInfo, vec2 HandPos, float HandAngle, float Alpha);
16
17 void RenderHand(const CTeeRenderInfo *pInfo, vec2 CenterPos, vec2 Dir, float AngleOffset, vec2 PostRotOffset, float Alpha);
18 void RenderPlayer(
19 const CScreenRect &ScreenRect,
20 const CNetObj_Character *pPrevChar,
21 const CNetObj_Character *pPlayerChar,
22 const CTeeRenderInfo *pRenderInfo,
23 int ClientId,
24 float Intra = 0.f);
25 void RenderHook(
26 const CScreenRect &ScreenRect,
27 const CNetObj_Character *pPrevChar,
28 const CNetObj_Character *pPlayerChar,
29 const CTeeRenderInfo *pRenderInfo,
30 int ClientId,
31 float Intra = 0.f);
32 void RenderHookCollLine(
33 const CScreenRect &ScreenRect,
34 const CNetObj_Character *pPrevChar,
35 const CNetObj_Character *pPlayerChar,
36 int ClientId);
37 bool IsPlayerInfoAvailable(int ClientId) const;
38
39 int m_WeaponEmoteQuadContainerIndex;
40 int m_aWeaponSpriteMuzzleQuadContainerIndex[NUM_WEAPONS];
41
42 void CreateNinjaTeeRenderInfo();
43 void CreateSpectatorTeeRenderInfo();
44
45 std::shared_ptr<CManagedTeeRenderInfo> m_pNinjaTeeRenderInfo;
46 std::shared_ptr<CManagedTeeRenderInfo> m_pSpectatorTeeRenderInfo;
47
48public:
49 float GetPlayerTargetAngle(
50 const CNetObj_Character *pPrevChar,
51 const CNetObj_Character *pPlayerChar,
52 int ClientId,
53 float Intra = 0.0f);
54
55 int Sizeof() const override { return sizeof(*this); }
56 void OnInit() override;
57 void OnRender() override;
58
59 const std::shared_ptr<CManagedTeeRenderInfo> &NinjaTeeRenderInfo() const { return m_pNinjaTeeRenderInfo; }
60 const std::shared_ptr<CManagedTeeRenderInfo> &SpectatorTeeRenderInfo() const { return m_pSpectatorTeeRenderInfo; }
61};
62
63#endif
64