⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aiplayer.h

📁 五行MMORPG引擎系统V1.0
💻 H
字号:
//-----------------------------------------------------------------------------
// Torque Game Engine 
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------

#ifndef _AIPLAYER_H_
#define _AIPLAYER_H_

#ifndef _PLAYER_H_
#include "game/player.h"
#endif


class AIPlayer : public Player {

	typedef Player Parent;

protected:
	/// TGE_RPG
   //enum MaskBits {
   //   MoveToMask   = Parent::NextFreeMask << 0,	/// 移动到指定位置
   //   NextFreeMask = Parent::NextFreeMask << 1
   //};

public:
	enum MoveState
	{
		ModeStop,
		ModeMove,
		ModeStuck,
		ModeRound,///只转身
	};
#ifdef TGE_RPG
	enum MoveType
	{
		MT_NONE,
		MT_DESTINATION,
		MT_MOVETO,
		MT_ROUND,
		MT_AIM,
		MT_AIMLOC
	};
#endif

private:
		Point3F	m_ptMoveTo;						// TGE_RPG 指定准备移动坐标
      bool		m_bMoveToSlowdown;         // TGE_RPG
		F32		m_fTurnRoundStep;				//转身起步步长角度
		bool		m_bPressDown;					//鼠标如果一直按着,人物将永远向鼠标方向走

		MoveState mMoveState;
		F32 mMoveSpeed;
		F32 mMoveTolerance;                 // Distance from destination before we stop
		Point3F mMoveDestination;           // Destination for movement
      Point3F mLastLocation;              // For stuck check
      bool mMoveSlowdown;                 // Slowdown as we near the destination

		SimObjectPtr<GameBase> mAimObject; // Object to point at, overrides location
		bool mAimLocationSet;               // Has an aim location been set?
		Point3F mAimLocation;               // Point to look at
      bool mTargetInLOS;                  // Is target object visible?

      Point3F mAimOffset;

#ifdef TGE_RPG	/// TGE_Move
		MoveType		m_nMoveType;
#endif

      // Utility Methods
      void throwCallback( const char *name );
public:
		DECLARE_CONOBJECT( AIPlayer );

		AIPlayer();
      ~AIPlayer();

		virtual bool getAIMove( Move *move );

#ifdef TGE_RPG	/// TGE_Move
		virtual bool getNextMove(Move &curMove);
		virtual void onReachGoal();
#endif


		// Targeting and aiming sets/gets
		void setAimObject( GameBase *targetObject );
      void setAimObject( GameBase *targetObject, Point3F offset );
		GameBase* getAimObject() const  { return mAimObject; }
		void setAimLocation( const Point3F &location );
		Point3F getAimLocation() const { return mAimLocation; }
		void clearAim();

		// Movement sets/gets
		void setMoveSpeed( const F32 speed );
		F32 getMoveSpeed() const { return mMoveSpeed; }
		void setMoveTolerance( const F32 tolerance );
		F32 getMoveTolerance() const { return mMoveTolerance; }
		void setMoveDestination( const Point3F &location, bool slowdown );
		Point3F getMoveDestination() const { return mMoveDestination; }
		void stopMove();


		/// TGE_RPG
		/// 发送移动指令到Server,由Server把移动指令派发到各Client端
#ifdef TGE_RPG /// TGE_Move

		inline void setMoveTo(){m_nMoveType = MT_MOVETO;}
		void setMoveTo( const Point3F &location, bool slowdown ,bool bPressDown);

		void faceTo( const Point3F &ptFace,bool bFaceMe=true);
		void moveTo( const Point3F &ptPos)	{setMoveTo(ptPos,false,false);}
#endif

		/// TGE_RPG
		U32  packUpdate  (NetConnection *conn, U32 mask, BitStream *stream);
		void unpackUpdate(NetConnection *conn,           BitStream *stream);

};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -