//------------------------------------------------------------------------------ /** ÀÎDz ÀԷ¿¡ µû¸¥ ij¸¯ÅÍ »óÅ ó¸® @author @since @remarks -2005.06.07 ¼Ò½º Á¤¸®(Áö¿Ï) - */ #pragma once class Character; class TerrainObject; class Item; #include "GameFunc.h" #define PICKING_IGNORE_ITEM 0x00000001 #define PICKING_IGNORE_FRIEND 0x00000002 #define PICKING_IGNORE_CORPSE 0x00000004 #define FOLLOW_DELAY_TIME 500 enum UI_VOICE_KIND { UI_VOICE_NONE = 0, UI_VOICE_LIMIT_USE, UI_VOICE_TARGET_TOO_FAR, UI_VOICE_NOT_ENOUGH_MONEY, UI_VOICE_NOT_ENOUGH_MANA, UI_VOICE_NOT_ENOUGH_POINT, UI_VOICE_NO_REPAIRABLE, UI_VOICE_NO_TARGET, #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE UI_VOICE_NOT_ENOUGH_FP, #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE }; const int UI_VOICE_DELAY = 3000; enum SPECIAL_MOVE { SPECIAL_MOVE_FORWORD =0, SPECIAL_MOVE_BACKWORD, SPECIAL_MOVE_LEFT, SPECIAL_MOVE_RIGHT, SPECIAL_MOVE_MAX, }; enum SEARCH_TARGET_TYPE { SEARCH_TARGET_NEAREST = 0, SEARCH_TARGET_NEXT, SEARCH_TARGET_PREVIOUS, SEARCH_TARGET_MAX, }; class PickingData { private: DWORD m_dwPickedTarget; WzVector m_vPickedPos; int m_iPickedTile; BOOL m_bCanMoveToPickedPos; BOOL m_bIgnorePlayer; public: PickingData(); void Init(); void ProcessPicking(); public: BOOL IsCanMoveToPickedPosition() { return m_bCanMoveToPickedPos; } Object* GetPickedObject(); Character* GetPickedCharacter(); Item* GetPickedItem(); MapObject* GetPickedMapObject(); DWORD GetPickedObjectKey(); int GetPickedTileIndex() { return m_iPickedTile; } const WzVector& GetPickedPosition() const { return m_vPickedPos; } }; class KeyboardInputData { // Foward, Backward, LeftStep, RightStep BOOL m_KeyboardPressed[4]; BOOL m_bLeftTurnPressed; BOOL m_bRightTurnPressed; //½ºÆä¼È À̵¿ BOOL m_SpecialKeyboardPressed[4]; DWORD m_LastInputTime[4]; BOOL m_bSpecialMoveFirstDown[4]; public: KeyboardInputData() { Reset(); } void Reset() { m_KeyboardPressed[0] = FALSE; m_KeyboardPressed[1] = FALSE; m_KeyboardPressed[2] = FALSE; m_KeyboardPressed[3] = FALSE; m_bLeftTurnPressed = FALSE; m_bRightTurnPressed = FALSE; //½ºÆä¼È À̵¿ m_SpecialKeyboardPressed[0] = FALSE; m_SpecialKeyboardPressed[1] = FALSE; m_SpecialKeyboardPressed[2] = FALSE; m_SpecialKeyboardPressed[3] = FALSE; m_LastInputTime[0] = 0; m_LastInputTime[1] = 0; m_LastInputTime[2] = 0; m_LastInputTime[3] = 0; m_bSpecialMoveFirstDown[0] = FALSE; m_bSpecialMoveFirstDown[1] = FALSE; m_bSpecialMoveFirstDown[2] = FALSE; m_bSpecialMoveFirstDown[3] = FALSE; } void UpdateSpecialMove3( DWORD CurrentTickTime ) { // ´©¸£°í ÀÖÀ¸¸é ÀÚµ¿ÀûÀ¸·Î ½ºÅÇÀ» ¹â´Â ¹æ½Ä m_SpecialKeyboardPressed[0] = m_KeyboardPressed[0]; m_SpecialKeyboardPressed[1] = m_KeyboardPressed[1]; m_SpecialKeyboardPressed[2] = m_KeyboardPressed[2]; m_SpecialKeyboardPressed[3] = m_KeyboardPressed[3]; } void UpdateSpecialMove4( DWORD CurrentTickTime ) { // ۸¦ ´©¸¥ÈÄ ¾î´ÀÁ¤µµ ½Ã°£µ¿¾ÈÀ» ½ºÅÇÀ» ¹â´Â ¹æ½Ä for( size_t i=0;i!=4;++i) { m_SpecialKeyboardPressed[i] = FALSE; if( m_bSpecialMoveFirstDown[i] == FALSE && m_KeyboardPressed[i] == TRUE ) { m_LastInputTime[i] = CurrentTickTime; m_bSpecialMoveFirstDown[i] = TRUE; } if( m_bSpecialMoveFirstDown[i] == TRUE && m_KeyboardPressed[i] == FALSE ) { m_bSpecialMoveFirstDown[i] = FALSE; } static DWORD s_time_delay = 300; if( m_LastInputTime[i] + s_time_delay >= CurrentTickTime ) { m_SpecialKeyboardPressed[i] = TRUE; } } } void UpdateSpecialMove2( DWORD CurrentTickTime ) { // ۸¦ ¶¾ ÈÄ ´Ù½Ã ´­·¯ÁÖ¾î¾ß ÇÏ´Â ¹æ½Ä for( size_t i=0;i!=4;++i) { m_SpecialKeyboardPressed[i] = FALSE; if( m_bSpecialMoveFirstDown[i] == FALSE && m_KeyboardPressed[i] == TRUE ) { m_SpecialKeyboardPressed[i] = TRUE; m_bSpecialMoveFirstDown[i] = TRUE; } if( m_bSpecialMoveFirstDown[i] == TRUE && m_KeyboardPressed[i] == FALSE ) { m_bSpecialMoveFirstDown[i] = FALSE; } } } void UpdateSpecialMove5( DWORD CurrentTickTime ) { for( size_t i=0;i!=4;++i) { m_SpecialKeyboardPressed[i] = FALSE; if( m_bSpecialMoveFirstDown[i] == FALSE && m_KeyboardPressed[i] == TRUE ) { m_SpecialKeyboardPressed[i] = TRUE; m_bSpecialMoveFirstDown[i] = TRUE; } } } void UpdateSpecialMove52() { for( size_t i=0;i!=4;++i) { if( m_bSpecialMoveFirstDown[i] == TRUE && m_KeyboardPressed[i] == FALSE ) { m_bSpecialMoveFirstDown[i] = FALSE; } } } void UpdateSpecialMove( DWORD CurrentTickTime ) { m_SpecialKeyboardPressed[0] = FALSE; m_SpecialKeyboardPressed[1] = FALSE; m_SpecialKeyboardPressed[2] = FALSE; m_SpecialKeyboardPressed[3] = FALSE; static DWORD s_double_down_time = 500; int pressed_key_count = 0; if( m_KeyboardPressed[0] ) ++pressed_key_count; if( m_KeyboardPressed[1] ) ++pressed_key_count; if( m_KeyboardPressed[2] ) ++pressed_key_count; if( m_KeyboardPressed[3]) ++pressed_key_count; if( pressed_key_count == 1 ) { for( size_t i=0;i!=4;++i) { if( m_KeyboardPressed[i] == TRUE && m_bSpecialMoveFirstDown[i] == FALSE ) { m_bSpecialMoveFirstDown[i] = TRUE; if( m_LastInputTime[i] + s_double_down_time >= CurrentTickTime ) { m_SpecialKeyboardPressed[i] = TRUE; m_LastInputTime[i] = 0; } else { m_LastInputTime[i] = CurrentTickTime; } } } } for( size_t i=0;i!=4;++i) { if( m_KeyboardPressed[i] == FALSE ) m_bSpecialMoveFirstDown[i] = FALSE; if( m_SpecialKeyboardPressed[i] == TRUE ) m_LastInputTime[i] = 0; } } public: void SetFowardPressed( BOOL Pressed ) { m_KeyboardPressed[0] = Pressed; } void SetBackwardPressed( BOOL Pressed ) { m_KeyboardPressed[1] = Pressed; } void SetLeftStepPressed( BOOL Pressed ) { m_KeyboardPressed[2] = Pressed; } void SetRightStepPressed( BOOL Pressed ) { m_KeyboardPressed[3] = Pressed; } void SetLeftTurnPressed( BOOL Pressed ) { m_bLeftTurnPressed = Pressed; } void SetRightTurnPressed( BOOL Pressed ) { m_bRightTurnPressed = Pressed; } BOOL GetFowardPressed() { return m_KeyboardPressed[0]; } BOOL GetBackwardPressed() { return m_KeyboardPressed[1]; } BOOL GetLeftStepPressed() { return m_KeyboardPressed[2]; } BOOL GetRightStepPressed() { return m_KeyboardPressed[3]; } BOOL GetLeftTurnPressed() { return m_bLeftTurnPressed; } BOOL GetRightTurnPressed() { return m_bRightTurnPressed; } BOOL IsKeyboardMovePressed() { return GetFowardPressed() || GetBackwardPressed() || GetLeftStepPressed() || GetRightStepPressed(); } BOOL IsKeyboardPressed() { return GetFowardPressed() || GetBackwardPressed() || GetLeftStepPressed() || GetRightStepPressed() || GetLeftTurnPressed() || GetRightTurnPressed(); } BOOL GetSpecialMoveFoward() { return m_SpecialKeyboardPressed[0]; } BOOL GetSpecialMoveBackword() { return m_SpecialKeyboardPressed[1]; } BOOL GetSpecialMoveLeftStep() { return m_SpecialKeyboardPressed[2]; } BOOL GetSpecialMoveRightStep() { return m_SpecialKeyboardPressed[3]; } }; class HeroActionInput : public PickingData { public: HeroActionInput(void); ~HeroActionInput(void); void Init(); void Process(DWORD dwTick); void SetTransFormAction(PLAYER_ACTION *pAction); void SetComboDelay(int iDelay); int GetComboDelay(); void SetCurrentTarget(DWORD dwID,BOOL bCheck=TRUE); DWORD GetCurrentTarget(); BOOL ProcessQueueAction(); BOOL ProcessQueueTransForm(); BOOL CanDoNextAttack(); void SetCanDoNextAttack(BOOL bFlag); float GetActionLength(PLAYER_ACTION action); PLAYER_ACTION GetQueueAction(); PLAYER_ACTION& GetQueueActionRef() { return m_QueueAction; } BOOL CanBeSkillTarget(DWORD dwSkillID,Character *pTarget,BOOL bForceAttack,int &iResult); BOOL CheckSoulControl(Character* pTarget,DWORD dwSkillID,int &iResult); BOOL IsAttackSkillArea() { return m_ShowTargetAreaPointer; } void SetComboReset();//È÷Æ®¼ö ÃʱâÈ­ float GetAttackActionLength(); void SetEnableInput(BOOL bFlag); BOOL IsEnableInput(); void ValkyrieShot(); void ValkyrieReload(); void SetAutoAttack(BOOL bFlag,BOOL bCheck=TRUE); void SetAutoRun(BOOL bFlag,BOOL bCheck=TRUE); BOOL GetAutoRun(); void SetAreaSkill(BOOL bShow); BOOL IsAutoAttackMode( void ); DWORD IncreaseComboCount(); DWORD GetComboCount(); void ClearPickingTarget(); BOOL CanSitState(); void PlayLimitUseSound(); void PlayNoTargetSound(); void PlayTargetTooFarSound(); void PlayNotEnoughMoneySound(); void PlayNotEnoughManaSound(); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE void PlayNotEnoughFPSound(); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE void PlayNotEnoughPointSound(); void PlayNoRepairableSound(); BOOL CannotAttack(Object* pTargetObject); void SetCannotAttack(BOOL bFlag) { m_bCannotAttack = bFlag; } bool CanAttackInDominationWar(); int GetSkillQueueSize(){ return g_SkillQueue.Size();} BOOL InsertSkill(SLOTCODE dwSkillid); BOOL OnSkill(SLOTCODE dwSkillid); BOOL UseSummonSkill(SLOTCODE dwSkillid); BOOL IsIdleState( void ); BOOL CanGetItem(DWORD dwOwnerKey); BOOL CannotMoveState() const; void SetAckBeginVendor(BOOL val) { m_bAckBeginVendor = val;} BOOL OnLClickedCharacter(Character* pObj, RELATIONKIND::TYPE relationKind, bool nove_nearest); BOOL MoveToPosition( const WzVector& DestPosition, bool move_nearest ); BOOL MoveToAction(WzVector vDest, bool move_nearest ); float GetSkillRange( BASE_SKILLINFO* skill_info ); DWORD GetClickedNpcCode() { return m_dwClickedNpcCode;} void PickUpAllItem(); #ifdef MAP_EDIT_MODE BOOL OnRClickedMapObject(MapObject *pObj); BOOL OnRClickedTile(); TerrainObject *GetTargetTerrainObject(); void SetEditMapObjKey(DWORD dwKey); DWORD GetEditMapObjKey(); #endif BOOL OnSpacePushItem( BOOL bAllPickup = FALSE); #ifdef _NA_20100307_BETAKEY_SYSTEM BOOL IsUseableNPCBetakey(BASE_NPCINFO* pNPCInfo); #endif//_NA_20100307_BETAKEY_SYSTEM private: BOOL UseSkill(DWORD skillid,BOOL bForceAttack); BOOL UseAreaSkill(); BOOL OnLDragedCharacter(Character* pObj, RELATIONKIND::TYPE relationKind); BOOL OnShiftLClickedCharacter(Character* pObj, RELATIONKIND::TYPE relationKind); public: void OnSearchTarget(SEARCH_TARGET_TYPE search_type); BOOL UpdateTargetList( float fDistance, BOOL bCheckCameraAngle = TRUE ,BOOL bChekChaoState=FALSE); BOOL OnTabPushTarget( void ); BOOL OnNextTarget( void ); BOOL OnPrevTarget( void ); BOOL OnLClickedPosition(WzVector* pClickedPosition); BOOL OnLClickedMapObject(MapObject *pObj, bool bKeyUp = true); // ´ë»ó ¸Ê¿ÀºêÁ§Æ®·Î À̵¿ÈÄ Å¸ÀÔº° ¾×¼ÇÀ» ÃëÇÑ´Ù BOOL MoveToMapObjectWithAction(MapObject* pObj, bool bKeyUp = true ); public: void ProcessTargeting(); void PressQuickSlotKey(); void ToggleChangeSlotSize(); private: BOOL OnLClickedItem(Item *pItem); BOOL OnValkyrieLClickedCharacter(Character* pObj); BOOL OnValkyrieLDragedCharacter(Character* pObj); BOOL OnLClickedPositionWithItem(WzVector* pClickedPosition); BOOL OnRClickedCharacter(Character* pObj, RELATIONKIND::TYPE relationKind); BOOL OnRClickedPosition(WzVector* pClickedPosition); BOOL FindNearesetPathTile(WzVector *pClickedPos,WzVector *pRet); VOID InitTerm(); VOID ProcessVoiceDelay(DWORD dwTick); BOOL ProcessKeyboardMove(); BOOL ProcessValkyrieKeyboardMove(); BOOL ProcessElementalistKeyboardMove(); BOOL ProcessDefaultKeyboardMove(); BOOL ProcessKeyboardJump(); BOOL ProcessSpreadWing(); BOOL ProcessMouse(); BOOL ProcessValkyrieMouse(); BOOL ProcessMouseWhenKeyboardMove(); VOID ProcessAutoAttack(); BOOL ProcessQueuePlayerMeet(); BOOL ProcessQueueNPCMeet(); BOOL ProcessQueueVendorMeet(); #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_STATUE BOOL ProcessQueueStatuePlayerMeet(); #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_STATUE BOOL ProcessQueueUseObject(); BOOL ProcessQueueCollectObject(); BOOL ProcessQueueAttack(); BOOL ProcessQueueSkill(); BOOL ProcessQueuePlayerFollow(); BOOL ProcessSpecialMove(); BOOL ProcessQueueWayPointMeet(); bool ProcessQueueAirShipMeet(); BOOL ProcessQueueDominationObject(); BOOL ProcessQueueGetItem(); BOOL ProcessQueueShot(); void ProcessOptionKey(); void ProcessBaseOptionKey(); void ProcessComboDelay(DWORD dwTick); void ProcessCursor(); void ProcessObserverModeKey( DWORD dwTick ); void ProcessAssistTarget(); BOOL ProcessTargetClick( Character *pTarget, BOOL bAutoAttack = TRUE ); void ProcessKeyboardAttack(); BOOL AttackNearestTarget(); DWORD FindNearestTarget(); void SetHeroTurnState(); BOOL IsActionState(); BOOL SetNearestTarget(); public: BOOL IsPicking() const { return m_bPicking; } WzVector GetPickingPosition() { return m_PickingPosition; } BOOL CanMoveToPickedPos() { return PickingData::IsCanMoveToPickedPosition(); } BOOL GetKeyboardQueueAttack() { return m_bKeyboardQueueAttack; } void SetMoveDelay(DWORD dwDelay); void ResetSpecialMove(); BOOL SetFollowState( BOOL bFlag, DWORD dwPlayerKey = 0 ); BOOL GetFollowState( void ); DWORD GetFollowPlayer( void ); void ProcessFollow( void ); BOOL ProcessUserAction( SLOTCODE dwSkillid ); BOOL ProcessUserEmoticon( SLOTCODE dwSkillid ); BOOL IsSpecialMove(); void ProcessTeleportMoveSkill(WzVector teleport_direction); BOOL UseSpecialMoveSkill( DWORD SkillCode, const WzVector& TargetPosition ); BOOL IsShootingMode(); // ¹ß۸® ¼¦ ¸ðµåÀΰ¡. BOOL lsForceAttack(); BOOL ChoaCanUse(); BOOL IsShowPartyMemberOnly(); BOOL SetShowPartyMemberOnly(BOOL only_show_party); void SetFixTarget(BOOL bFixTarget); BOOL GetFixTarget(void); void SetAutoTarget(BOOL bTarget) { m_bAutoTarget = bTarget;} BOOL GetAutoTarget() { return m_bAutoTarget;} #ifdef _20220411_AUTO_AIM void SetAutoAim(BOOL bTarget) { m_bAutoAim = bTarget;} BOOL GetAutoAim() { return m_bAutoAim;} #endif void SetForwardTargeting(BOOL val); BOOL GetForwardTargeting(); void ClickPartyMember(DWORD dwObjKey); void SetMousePointHide(BOOL val) { m_bIsMousePointHide =val;} BOOL GetMousePointHide() {return m_bIsMousePointHide;} POINT GetMousePoint() { return m_MousePoint;} #ifdef PERF_AUTO_MOVE_TEST void SetAutoMove(BOOL bMove){m_bAutoMove=bMove;} BOOL GetAutoMove(){ return m_bAutoMove;} void SwitchMove(){ m_bSwitch=!m_bSwitch;} #endif void PickingForShowMonsterName( void ); void SetCameraBaseMove(BOOL val); BOOL GetCameraBaseMove(); BOOL IsShowPetInfo( void ) { return m_bShowPetInfo;} BOOL ToggleShowPetInfo( void ); #ifdef _NA_007192_20140428_CLIENT_LUA_MACRO_SYSTEM void ForceAreaSkillPosition(DWORD skill_code, WzVector target); #endif //_NA_007192_20140428_CLIENT_LUA_MACRO_SYSTEM private: DWORD GetSkillCode(DWORD dwClassId,BOOL & bActive,float &dwDistance); WzVector GetCanTeleportPosition(WzVector vDest, int iSplineNum = 10); void ShowCanNotMoveReason(DWORD dwReason); BOOL IsAckBeginVendor() { return m_bAckBeginVendor;} private: BOOL m_bShowPetInfo; WzVector m_PickingPosition; //¸¶¿ì½º·Î Ŭ¸¯ÇÑ ÇÇÅ· ÁöÁ¡ BOOL m_bPicking; SLOTCODE m_TargetAreaSkillID; BOOL m_ShowTargetAreaPointer; // ÅÚ·¹Æ÷Æ® »óÅ¿¡¼± ¸¶¿ì½º ÇÇÅ·½Ã »ç¿ëÇÏ°Ô Çϱâ À§ÇØ BOOL m_IsClickedTargetArea; // Áö¿ªÁöÁ¤ ½ºÅ³À» »ç¿ëÇÒ¶§ Áö¿ªÀ» Ŭ¸¯ÇÏ¿´´Â°¡ WzVector m_TargetAreaPosition; // Áö¿ªÁöÁ¤ ½ºÅ³À» »ç¿ëÇϱâ À§ÇÑ À§Ä¡ DWORD m_dwSelectedTarget; BOOL m_bAutoAttack; BOOL m_bKeyBoardMoveCheck; int m_iComboDelay; int m_iComboCount; PLAYER_ACTION m_QueueAction; DWORD m_dwStartPickPosTime; nArray m_TransFormActionQueue; BOOL m_bCanDoNextAttack; BOOL m_bAutoRun; BOOL m_bEnableInput; // ÀÔ·Â °¡´É / ºÒ°¡´É BOOL m_bIsHeroKeyboardMove; DWORD m_OldReason; DWORD m_dwOldUseSkillId; BOOL m_bAckBeginVendor; #ifdef _20220411_AUTO_AIM BOOL m_bAutoAim; #endif bool spread_wing_key_pressed_; #ifdef PERF_AUTO_MOVE_TEST BOOL m_bAutoMove; WzVector m_vSrcPos; WzVector m_vDestPos; BOOL m_bSwitch; #endif #ifdef MAP_EDIT_MODE DWORD m_dwEditMapObjKey; #endif BOOL m_bFixTarget; BOOL m_bAutoTarget; int m_iMoveToActionTime; BOOL m_bKeyboardQueueAttack; int m_iKeyboardQueueAttackDelay; BOOL m_bCanInputMode; POINT m_MousePoint; BOOL m_bIsMousePointHide; int m_iUIVoiceDelay; DWORD m_dwUIVoice; //Ư¼ö À̵¿ °ü·Ã ´Ù´Ú DWORD m_dwSpecialMovePreTime[SPECIAL_MOVE_MAX]; BOOL m_bSpecialMoveFirstDown[SPECIAL_MOVE_MAX]; BOOL m_bSpecialMove; int m_iMoveDelay; // °ø°ÝºÒ°¡. BOOL m_bCannotAttack; BOOL m_bFollowPlayer; DWORD m_dwFollowPlayerKey; DWORD m_dwFollowPlayerTime; RELATIONKIND::TYPE m_TargetType; BOOL m_bShowPartyMemberOnly; BOOL m_bForwardTargeting; DWORD m_dwClickedNpcCode; BOOL m_bCameraBaseMove; // ۰»½Å //! process ½Ã °è¼Ó °»½Å //! ³¯°í ÀÖ´Â »óÅ¿¡¼­ Á¡ÇÁ۸¦ ´©¸£¸é ´Ù¸¥ ¸ð¼Ç(¾Ö´Ï¸ÞÀ̼Ç)À» Çϱâ À§ÇÔ. bool jump_key_pressed_; void CancelSkillQueue(); #ifdef _NA_000000_20150609_CHARACTER_ROTATE_RUNNING_BUG_FIX static BOOL bIsRotateL; #endif //_NA_000000_20150609_CHARACTER_ROTATE_RUNNING_BUG_FIX private: KeyboardInputData m_KeyboardState; public: void set_forward_key_pressed(bool val) { m_KeyboardState.SetFowardPressed(val); } void set_backward_key_pressed(bool val) { m_KeyboardState.SetBackwardPressed(val); } void set_left_turn_key_pressed(bool val) { m_KeyboardState.SetLeftTurnPressed(val); } void set_right_turn_key_pressed(bool val) { m_KeyboardState.SetRightTurnPressed(val); } void set_left_step_key_pressed(bool val) { m_KeyboardState.SetLeftStepPressed(val); } void set_right_step_key_pressed(bool val) { m_KeyboardState.SetRightStepPressed(val); } BOOL IsRightKeyPressed() { return m_KeyboardState.GetRightTurnPressed(); } BOOL IsLeftKeyPressed() { return m_KeyboardState.GetLeftTurnPressed(); } bool is_jump_key_pressed() const { return jump_key_pressed_; } void set_jump_key_pressed(bool val) { jump_key_pressed_ = val; } bool is_spread_wing_key_pressed() const { return spread_wing_key_pressed_; } void set_spread_wing_key_pressed(bool val) { spread_wing_key_pressed_ = val; } void ClearTransFromQueue() { m_TransFormActionQueue.Clear(); } }; //------------------------------------------------------------------------------ /** Ű Å¥ ¸Þ´ÏÁ®¿Í ¿¬µ¿ µÊÀ¸·Î Ç×»ó ¼ÂÇÔ¼ö »ç¿ë Çϼ¼¿ä! */ inline void HeroActionInput::SetAutoAttack(BOOL bFlag,BOOL /*bCheck*/) { //#ifdef _MILKY_DEBUG // bFlag = FALSE; //#endif //_MILKY_DEBUG m_bAutoAttack=bFlag; if( m_bAutoAttack ) { // ¿ÀÅä ¾îÅÃÀÌ ÄÑÁö¸é µû¶ó´Ù´Ï±â¸¦ ²¨ÁØ´Ù SetFollowState( FALSE ); } } //------------------------------------------------------------------------------ /** Ű Å¥ ¸Þ´ÏÁ®¿Í ¿¬µ¿ µÊÀ¸·Î Ç×»ó ¼ÂÇÔ¼ö »ç¿ë Çϼ¼¿ä! */ inline void HeroActionInput::SetAutoRun(BOOL bFlag,BOOL /*bCheck*/) { m_bAutoRun=bFlag; } inline BOOL HeroActionInput::GetAutoRun() { return m_bAutoRun; } inline void HeroActionInput::SetMoveDelay(DWORD dwDelay) { m_iMoveDelay=dwDelay; } inline void HeroActionInput::ResetSpecialMove() { memset(m_dwSpecialMovePreTime,0,sizeof(DWORD)*SPECIAL_MOVE_MAX); memset(m_bSpecialMoveFirstDown,0,sizeof(BOOL)*SPECIAL_MOVE_MAX); m_bSpecialMove=FALSE; } inline BOOL HeroActionInput::GetFollowState( void ) { return m_bFollowPlayer; } inline DWORD HeroActionInput::GetFollowPlayer( void ) { return m_dwFollowPlayerKey; } inline BOOL HeroActionInput::IsSpecialMove() { return m_bSpecialMove; } inline BOOL HeroActionInput::IsShowPartyMemberOnly() { return m_bShowPartyMemberOnly; } inline BOOL HeroActionInput::SetShowPartyMemberOnly(BOOL only_show_party) { m_bShowPartyMemberOnly = only_show_party; } extern HeroActionInput g_HeroInput;