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_ITEMS_H
4#define GAME_CLIENT_COMPONENTS_ITEMS_H
5
6#include <base/color.h>
7
8#include <generated/protocol.h>
9
10#include <game/client/component.h>
11
12class CProjectileData;
13class CLaserData;
14class CScreenRect;
15
16class CItems : public CComponent
17{
18 void RenderProjectile(const CProjectileData *pCurrent, int ItemId, const CScreenRect &ScreenRect);
19 void RenderPickup(const CNetObj_Pickup *pPrev, const CNetObj_Pickup *pCurrent, bool IsPredicted, int Flags);
20 void RenderFlags();
21 void RenderFlag(const CNetObj_Flag *pPrev, const CNetObj_Flag *pCurrent, const CNetObj_GameData *pPrevGameData, const CNetObj_GameData *pCurGameData);
22 void RenderLaser(const CLaserData *pCurrent, bool IsPredicted = false);
23
24 int m_ItemsQuadContainerIndex;
25
26public:
27 int Sizeof() const override { return sizeof(*this); }
28 void OnRender() override;
29 void OnInit() override;
30
31 void ReconstructSmokeTrail(const CProjectileData *pCurrent, int DestroyTick);
32 void RenderLaser(vec2 From, vec2 Pos, ColorRGBA OuterColor, ColorRGBA InnerColor, float TicksBody, float TicksHead, int Type) const;
33
34private:
35 int m_BlueFlagOffset;
36 int m_RedFlagOffset;
37 int m_PickupHealthOffset;
38 int m_PickupArmorOffset;
39 int m_aPickupWeaponOffset[NUM_WEAPONS];
40 int m_PickupNinjaOffset;
41 int m_aPickupWeaponArmorOffset[4];
42 int m_aProjectileOffset[NUM_WEAPONS];
43 int m_aParticleSplatOffset[3];
44 int m_DoorHeadOffset;
45 int m_PulleyHeadOffset;
46 int m_FreezeHeadOffset;
47};
48
49#endif
50