void CActor::IR_OnMouseMove(int dx, int dy) { if(hud_adj_mode) { g_player_hud->tune (Ivector().set(dx,dy,0)); return; } PIItem iitem = inventory().ActiveItem(); if(iitem && iitem->cast_hud_item()) iitem->cast_hud_item()->ResetSubStateTime(); if (Remote()) return; if(m_holder) { m_holder->OnMouseMove(dx,dy); return; } float LookFactor = GetLookFactor(); CCameraBase* C = cameras [cam_active]; float scale = (C->f_fov/g_fov)*psMouseSens * psMouseSensScale/50.f / LookFactor; if (dx){ float d = float(dx)*scale; cam_Active()->Move((d<0)?kLEFT:kRIGHT, _abs(d)); } if (dy){ float d = ((psMouseInvert.test(1))?-1:1)*float(dy)*scale*3.f/4.f; cam_Active()->Move((d>0)?kUP:kDOWN, _abs(d)); } }
void CActor::IR_OnKeyboardHold(int cmd) { if(hud_adj_mode && pInput->iGetAsyncKeyState(DIK_LSHIFT)) return; if (Remote() || !g_Alive()) return; if (m_input_external_handler && !m_input_external_handler->authorized(cmd)) return; if (IsTalking()) return; if(m_holder) { m_holder->OnKeyboardHold(cmd); return; } #ifdef DEBUG if(psActorFlags.test(AF_NO_CLIP) && (cmd==kFWD || cmd==kBACK || cmd==kL_STRAFE || cmd==kR_STRAFE || cmd==kJUMP || cmd==kCROUCH)) { NoClipFly(cmd); return; } #endif //DEBUG float LookFactor = GetLookFactor(); switch(cmd) { case kUP: case kDOWN: cam_Active()->Move( (cmd==kUP) ? kDOWN : kUP, 0, LookFactor); break; case kCAM_ZOOM_IN: case kCAM_ZOOM_OUT: cam_Active()->Move(cmd); break; case kLEFT: case kRIGHT: if (eacFreeLook!=cam_active) cam_Active()->Move(cmd, 0, LookFactor); break; case kACCEL: mstate_wishful |= mcAccel; break; case kL_STRAFE: mstate_wishful |= mcLStrafe; break; case kR_STRAFE: mstate_wishful |= mcRStrafe; break; case kL_LOOKOUT:mstate_wishful |= mcLLookout; break; case kR_LOOKOUT:mstate_wishful |= mcRLookout; break; case kFWD: mstate_wishful |= mcFwd; break; case kBACK: mstate_wishful |= mcBack; break; case kCROUCH: { if( !psActorFlags.test(AF_CROUCH_TOGGLE) ) mstate_wishful |= mcCrouch; }break; } }
void CActor::IR_OnKeyboardHold(int cmd) { if (m_blocked_actions.find((EGameActions)cmd) != m_blocked_actions.end() ) return; // Real Wolf. 14.10.2014 if (Remote() || !g_Alive()) return; // if (conditions().IsSleeping()) return; if (m_input_external_handler && !m_input_external_handler->authorized(cmd)) return; if (IsTalking()) return; if(m_holder) { m_holder->OnKeyboardHold(cmd); return; } float LookFactor = GetLookFactor(); switch(cmd) { case kUP: case kDOWN: cam_Active()->Move( (cmd==kUP) ? kDOWN : kUP, 0, LookFactor); break; case kCAM_ZOOM_IN: case kCAM_ZOOM_OUT: cam_Active()->Move(cmd); break; case kLEFT: case kRIGHT: if (eacFreeLook!=cam_active) cam_Active()->Move(cmd, 0, LookFactor); break; case kACCEL: mstate_wishful |= mcAccel; break; case kL_STRAFE: mstate_wishful |= mcLStrafe; break; case kR_STRAFE: mstate_wishful |= mcRStrafe; break; case kL_LOOKOUT:mstate_wishful |= mcLLookout; break; case kR_LOOKOUT:mstate_wishful |= mcRLookout; break; case kFWD: mstate_wishful |= mcFwd; break; case kBACK: mstate_wishful |= mcBack; break; case kCROUCH: mstate_wishful |= mcCrouch; break; } }
void CActor::IR_OnMouseMove(int dx, int dy) { if (Remote()) return; // if (conditions().IsSleeping()) return; if(m_holder) { m_holder->OnMouseMove(dx,dy); return; } float LookFactor = GetLookFactor(); CCameraBase* C = cameras [cam_active]; float scale = (C->f_fov/g_fov)*psMouseSens * psMouseSensScale/50.f / LookFactor; if (dx){ float d = float(dx)*scale; cam_Active()->Move((d<0)?kLEFT:kRIGHT, _abs(d)); } if (dy){ float d = ((psMouseInvert.test(1))?-1:1)*float(dy)*scale*3.f/4.f; cam_Active()->Move((d>0)?kUP:kDOWN, _abs(d)); } }