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 CNetObj_Character *pPrevChar,
20 const CNetObj_Character *pPlayerChar,
21 const CTeeRenderInfo *pRenderInfo,
22 int ClientId,
23 float Intra = 0.f);
24 void RenderHook(
25 const CNetObj_Character *pPrevChar,
26 const CNetObj_Character *pPlayerChar,
27 const CTeeRenderInfo *pRenderInfo,
28 int ClientId,
29 float Intra = 0.f);
30 void RenderHookCollLine(
31 const CNetObj_Character *pPrevChar,
32 const CNetObj_Character *pPlayerChar,
33 int ClientId);
34 bool IsPlayerInfoAvailable(int ClientId) const;
35
36 int m_WeaponEmoteQuadContainerIndex;
37 int m_aWeaponSpriteMuzzleQuadContainerIndex[NUM_WEAPONS];
38
39 void CreateNinjaTeeRenderInfo();
40 void CreateSpectatorTeeRenderInfo();
41
42 std::shared_ptr<CManagedTeeRenderInfo> m_pNinjaTeeRenderInfo;
43 std::shared_ptr<CManagedTeeRenderInfo> m_pSpectatorTeeRenderInfo;
44
45public:
46 float GetPlayerTargetAngle(
47 const CNetObj_Character *pPrevChar,
48 const CNetObj_Character *pPlayerChar,
49 int ClientId,
50 float Intra = 0.0f);
51
52 int Sizeof() const override { return sizeof(*this); }
53 void OnInit() override;
54 void OnRender() override;
55
56 const std::shared_ptr<CManagedTeeRenderInfo> &NinjaTeeRenderInfo() const { return m_pNinjaTeeRenderInfo; }
57 const std::shared_ptr<CManagedTeeRenderInfo> &SpectatorTeeRenderInfo() const { return m_pSpectatorTeeRenderInfo; }
58};
59
60#endif
61