














kill, I only added this to SV_TEAM_FORCED_SOLO because it's already possible to keep practice on death in team by not touching the startline. Closes #7304
https://github.com/ddnet/ddnet/assets/141338449/eb795d8f-0f37-4353-ae2e-79448b607150





































c++
class CCurveInfo
{
enum class EType
{
LINEAR,
STEP,
} m_Type;
vec2 GetBezierTangentOffsetStart() const;
void SetBezierTangentOffsetStart(vec2 TangentOffset);
vec2 GetBezierTangentOffsetEnd() const;
void SetBezierTangentOffsetEnd(vec2 TangentOffset);
private:
CEnvPointBezier m_BezierInfo;
};
struct CTransform
{
float OffsetX;
float OffsetY;
float Rotation;
};
class CEnvelopePoint
{
public:
float GetTime() const;
void SetTime(float Time);
float GetVolume() const;
void SetVolume(float Volume);
CTransform GetTransform() const;
void SetTransform(const CTransform &Transform);
ColorRGBA GetColor() const;
void SetColor(const ColorRGBA &Color);
std::array<float, 4> GetValues() const;
void SetValues(const std::array<float, 4>& Values);
CCurveInfo m_CurveInfo;
private:
// also store the points inheriting from CEditorObject in this class
// std::vector<std::array<CEnvelopeEditorPoint, 4>> m_vEditorPoints;
CEnvPoint m_PointInfo;
};

c++
class CCurveInfo
{
enum class EType
{
LINEAR,
STEP,
} m_Type;
vec2 GetBezierTangentOffsetStart() const;
void SetBezierTangentOffsetStart(vec2 TangentOffset);
vec2 GetBezierTangentOffsetEnd() const;
void SetBezierTangentOffsetEnd(vec2 TangentOffset);
private:
CEnvPointBezier m_BezierInfo;
};
struct CTransform
{
float OffsetX;
float OffsetY;
float Rotation;
};
class CEnvelopePoint
{
public:
float GetTime() const;
void SetTime(float Time);
float GetVolume() const;
void SetVolume(float Volume);
CTransform GetTransform() const;
void SetTransform(const CTransform &Transform);
ColorRGBA GetColor() const;
void SetColor(const ColorRGBA &Color);
std::array<float, 4> GetValues() const;
void SetValues(const std::array<float, 4>& Values);
CCurveInfo m_CurveInfo;
private:
// also store the points inheriting from CEditorObject in this class
// std::vector<std::array<CEnvelopeEditorPoint, 4>> m_vEditorPoints;
CEnvPoint m_PointInfo;
}; Get prefix for gettersCCurveType::m_Type seems redundant since we already have constants in mapitems.h


Get prefix for getters CEnvelopePoint::Time and CEnvelopePoint::SetTime?

CEnvelopePoint::Time and CEnvelopePoint::SetTime? 

CCurveType::m_Type seems redundant since we already have constants in mapitems.h CCurveInfo(EType Type) is a bit nicer than CCurveInfo(int Type), but that doesnt really matter. Or I can also make them a seperate enum in mapitems and then use that
int Type with a comment for now, instead of changing mapitems.h






(a, b) => { return b.frequency - a.frequency; } because only the sign matters




(a, b) => { return b.frequency - a.frequency; } because only the sign matters 








as any is the safest thing in the world 











dev role if I am a developer of a separate client and server type? Or is it mandatory to make a PR?



































































































(sorry to interrupt drama) (edited)


(sorry to interrupt drama) (edited)














(sorry to interrupt drama) (edited)
































back


























































































We can go back to having fun
1














































































































zoom, which is quite confusing for new players.
https://github.com/ddnet/ddnet/assets/141338449/f29b1cb0-23b9-47c8-bb4e-a853639c5f8d











