Files
2026-06-01 12:46:52 +02:00

71 lines
1.8 KiB
C++

#ifndef _SKMoveControler_h_
#define _SKMoveControler_h_
#include "K3DTypes.h"
#include <mmo/ArType.h>
class SGameAvatarEx;
class SGameSystem;
class SGameCamera;
class SCommandSystem;
class SGameWorld;
struct ArcadiaClient;
struct SGameMessage;
#define MOVE_NONE 0
#define MOVE_UP 1
#define MOVE_DOWN 2
#define MOVE_LEFT 4
#define MOVE_RIGHT 8
//#define MIN_CHANGED_CAM_DEGREE 30.0f // 디버깅을 쉽게 하기 위해서 우선 degree값을 넣는다.
class SKMoveControler
{
public:
SKMoveControler();
~SKMoveControler();
void initialize (SCommandSystem* commandSystem, SGameSystem* gameSystem, SGameCamera* gameCamera, SGameWorld* gameWorld, ArcadiaClient* arObject);
void start_move (K3DVector* curr_pos, float curr_dir, int key_status , K3DVector* ptarget_pos, AR_TIME elapsed ,int send_server);
bool get_move_pos (K3DVector* curr_pos, float* curr_dir, K3DVector* ptargetPos, AR_TIME* pelapsed,float rate);
void send_move (K3DVector* ptarget_pos,float move_dir,int key_status, bool send_server );
K3DVector get_local_pos ();
void stop_move (bool send_last_move);
float get_key_move_dir (int key_status);
void send_last_move (void);
void set_automove ( bool automove ) { m_automove = automove; }
int m_servermove;
bool m_automove;
float m_sent_key_status;
float m_sent_move_dir;
K3DVector m_sent_pos;
int m_sent_time;
AR_TIME m_arTime;
sUpdateTime<AR_TIME> m_moveUpdate;
void process (int gameRef);
void procMoveMsg (SGameMessage* msg);
void procMouseMsg (SGameMessage* msg);
void procMsgResult (SGameMessage* msg);
private:
SCommandSystem* m_commandSystem;
SGameSystem* m_gameSystem;
SGameCamera* m_gameCamera;
SGameWorld* m_gameWorld;
ArcadiaClient* m_arObject;
};
#endif