// CBallProj - [2020-04-13 11:57:46]
#ifndef _CBALLPROJ_H_
#define _CBALLPROJ_H_

#include "CBall.h"

/*
00158AF8 CBallProj::GetTimeHeight(int)
00158B7C CBallProj::EnsureProj(int)
00158BB4 CBallProj::Iterate(CBall *)
00158D74 CBallProj::GetHeightTime(int,int)
00158E50 CBallProj::GetTimePos(TPoint *,int)
00158ED0 CBallProj::GetTimePos3D(TPoint3D *,int)
00158F68 CBallProj::GetTimeSpeed(int)
00158FA0 CBallProj::GetBallPosTime(TPoint)
001590D4 CBallProj::StoreBallProj(bool)
00159114 CBallProj::ClearProj()
00159164 CBallProj::CheckBallProj()
0015919C CBallProj::GetPathNearestPoint(TPoint3D *,TPoint3D *,int *)
00159220 CBallProj::GetPathNearestPoint(TPoint *,TPoint *,int *)
*/

class CBallProj {
public:
  int GetTimeHeight(int);                                   // 00158AF8
  void EnsureProj(int);                                     // 00158B7C
  void Iterate(CBall *);                                    // 00158BB4
  int GetHeightTime(int, int);                              // 00158D74
  bool GetTimePos(TPoint *, int);                           // 00158E50
  void GetTimePos3D(TPoint3D *, int);                       // 00158ED0
  void GetTimeSpeed(int);                                   // 00158F68
  int GetBallPosTime(TPoint);                               // 00158FA0
  void StoreBallProj(bool);                                 // 001590D4
  void ClearProj();                                         // 00159114
  int CheckBallProj();                                      // 00159164
  uint GetPathNearestPoint(TPoint3D *, TPoint3D *, int *);  // 0015919C
  uint GetPathNearestPoint(TPoint *, TPoint *, int *);      // 00159220

  CBall ball_0;
  int field_DC;
  int field_E0;
  int field_E4;
  struct {
    TPoint3D point3D_0;
    TPoint3D point3D_C;
    TPoint3D point3D_14;
    int field_24;
  } field_E8[512];
};

extern CBallProj cBallProj;

#endif  //_CBALLPROJ_H_