void CActor::IR_OnKeyboardPress(int cmd) { if (m_blocked_actions.find((EGameActions)cmd) != m_blocked_actions.end() ) return; // Real Wolf. 14.10.2014 if (Remote()) return; // if (conditions().IsSleeping()) return; if (IsTalking()) return; if (m_input_external_handler && !m_input_external_handler->authorized(cmd)) return; switch (cmd) { case kWPN_FIRE: { mstate_wishful &=~mcSprint; //----------------------------- if (OnServer()) { NET_Packet P; P.w_begin(M_PLAYER_FIRE); P.w_u16(ID()); u_EventSend(P); } }break; default: { }break; } if (!g_Alive()) return; if(m_holder && kUSE != cmd) { m_holder->OnKeyboardPress (cmd); if(m_holder->allowWeapon() && inventory().Action(cmd, CMD_START)) return; return; }else if(inventory().Action(cmd, CMD_START)) return; switch(cmd){ case kJUMP: { mstate_wishful |= mcJump; { // NET_Packet P; // u_EventGen(P, GE_ACTOR_JUMPING, ID()); // u_EventSend(P); } }break; case kCROUCH_TOGGLE: { g_bAutoClearCrouch = !g_bAutoClearCrouch; if (!g_bAutoClearCrouch) mstate_wishful |= mcCrouch; }break; case kSPRINT_TOGGLE: { if (mstate_wishful & mcSprint) mstate_wishful &=~mcSprint; else mstate_wishful |= mcSprint; }break; case kCAM_1: cam_Set (eacFirstEye); break; case kCAM_2: cam_Set (eacLookAt); break; case kCAM_3: cam_Set (eacFreeLook); break; case kNIGHT_VISION: { const xr_vector<CAttachableItem*>& all = CAttachmentOwner::attached_objects(); xr_vector<CAttachableItem*>::const_iterator it = all.begin(); xr_vector<CAttachableItem*>::const_iterator it_e = all.end(); for(;it!=it_e;++it){ CTorch* torch = smart_cast<CTorch*>(*it); if (torch){ torch->SwitchNightVision(); break; } } }break; case kTORCH:{ const xr_vector<CAttachableItem*>& all = CAttachmentOwner::attached_objects(); xr_vector<CAttachableItem*>::const_iterator it = all.begin(); xr_vector<CAttachableItem*>::const_iterator it_e = all.end(); for(;it!=it_e;++it){ CTorch* torch = smart_cast<CTorch*>(*it); if (torch){ torch->Switch(); break; } } }break; case kWPN_1: case kWPN_2: case kWPN_3: case kWPN_4: case kWPN_5: case kWPN_6: case kWPN_RELOAD: //Weapons->ActivateWeaponID (cmd-kWPN_1); break; case kUSE: ActorUse(); break; case kDROP: b_DropActivated = TRUE; f_DropPower = 0; break; case kNEXT_SLOT: { OnNextWeaponSlot(); }break; case kPREV_SLOT: { OnPrevWeaponSlot(); }break; case kUSE_BANDAGE: case kUSE_MEDKIT: { if(IsGameTypeSingle()) { PIItem itm = inventory().item((cmd==kUSE_BANDAGE)? CLSID_IITEM_BANDAGE:CLSID_IITEM_MEDKIT ); if(itm) { inventory().Eat (itm); SDrawStaticStruct* _s = HUD().GetUI()->UIGame()->AddCustomStatic("item_used", true); _s->m_endTime = Device.fTimeGlobal+3.0f;// 3sec string1024 str; strconcat (sizeof(str),str,*CStringTable().translate("st_item_used"),": ", itm->Name()); _s->wnd()->SetText (str); } } }break; #ifdef INV_NEW_SLOTS_SYSTEM case kUSE_SLOT_QUICK_ACCESS_0: case kUSE_SLOT_QUICK_ACCESS_1: case kUSE_SLOT_QUICK_ACCESS_2: case kUSE_SLOT_QUICK_ACCESS_3: { if(IsGameTypeSingle()) { PIItem itm = 0; switch (cmd){ case kUSE_SLOT_QUICK_ACCESS_0: itm = inventory().m_slots[SLOT_QUICK_ACCESS_0].m_pIItem; break; case kUSE_SLOT_QUICK_ACCESS_1: itm = inventory().m_slots[SLOT_QUICK_ACCESS_1].m_pIItem; break; case kUSE_SLOT_QUICK_ACCESS_2: itm = inventory().m_slots[SLOT_QUICK_ACCESS_2].m_pIItem; break; case kUSE_SLOT_QUICK_ACCESS_3: itm = inventory().m_slots[SLOT_QUICK_ACCESS_3].m_pIItem; break; } if (itm){ CMedkit* pMedkit = smart_cast<CMedkit*> (itm); CAntirad* pAntirad = smart_cast<CAntirad*> (itm); CEatableItem* pEatableItem = smart_cast<CEatableItem*> (itm); CBottleItem* pBottleItem = smart_cast<CBottleItem*> (itm); string1024 str; if(pMedkit || pAntirad || pEatableItem || pBottleItem){ PIItem iitm = inventory().Same(itm,true); if(iitm){ inventory().Eat(iitm); strconcat(sizeof(str),str,*CStringTable().translate("st_item_used"),": ", iitm->Name()); }else{ inventory().Eat(itm); strconcat(sizeof(str),str,*CStringTable().translate("st_item_used"),": ", itm->Name()); } SDrawStaticStruct* _s = HUD().GetUI()->UIGame()->AddCustomStatic("item_used", true); _s->m_endTime = Device.fTimeGlobal+3.0f;// 3sec _s->wnd()->SetText (str); } } } }break; #endif } }