2023-10-17 15:37:12 +00:00
|
|
|
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
|
|
|
|
/* If you are missing that file, acquire a complete release at teeworlds.com. */
|
|
|
|
|
|
|
|
#ifndef ENGINE_CLIENT_SMOOTH_TIME_H
|
|
|
|
#define ENGINE_CLIENT_SMOOTH_TIME_H
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
2023-10-17 17:45:26 +00:00
|
|
|
class CGraph;
|
|
|
|
|
2023-10-17 15:37:12 +00:00
|
|
|
class CSmoothTime
|
|
|
|
{
|
2023-10-17 16:16:16 +00:00
|
|
|
public:
|
|
|
|
enum EAdjustDirection
|
|
|
|
{
|
|
|
|
ADJUSTDIRECTION_DOWN = 0,
|
|
|
|
ADJUSTDIRECTION_UP,
|
|
|
|
NUM_ADJUSTDIRECTIONS,
|
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
2023-10-17 15:37:12 +00:00
|
|
|
int64_t m_Snap;
|
|
|
|
int64_t m_Current;
|
|
|
|
int64_t m_Target;
|
|
|
|
|
|
|
|
int64_t m_SnapMargin;
|
|
|
|
int64_t m_CurrentMargin;
|
|
|
|
int64_t m_TargetMargin;
|
|
|
|
|
|
|
|
int m_SpikeCounter;
|
2023-10-17 16:16:16 +00:00
|
|
|
float m_aAdjustSpeed[NUM_ADJUSTDIRECTIONS];
|
2023-10-17 15:37:12 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
void Init(int64_t Target);
|
2023-10-17 16:16:16 +00:00
|
|
|
void SetAdjustSpeed(EAdjustDirection Direction, float Value);
|
2023-10-17 15:37:12 +00:00
|
|
|
|
2023-10-17 18:01:50 +00:00
|
|
|
int64_t Get(int64_t Now) const;
|
2023-10-17 15:37:12 +00:00
|
|
|
|
|
|
|
void UpdateInt(int64_t Target);
|
2023-10-17 16:16:16 +00:00
|
|
|
void Update(CGraph *pGraph, int64_t Target, int TimeLeft, EAdjustDirection AdjustDirection);
|
2023-10-17 15:37:12 +00:00
|
|
|
|
2023-10-17 18:01:50 +00:00
|
|
|
int64_t GetMargin(int64_t Now) const;
|
2023-10-17 15:37:12 +00:00
|
|
|
void UpdateMargin(int64_t TargetMargin);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|