//************************************************************************ // CLCDInput::OnFontChanged //************************************************************************ void CLCDInput::OnFontChanged() { if(m_iFontHeight == 0) return; if(m_pScrollbar) m_pScrollbar->SetSliderSize(m_iLineCount); m_iLinePosition = 0; m_iLineCount = GetHeight() / m_iFontHeight; if(m_pScrollbar) m_pScrollbar->SetSliderSize(m_iLineCount); m_Marker[0].iLine = 0; m_Marker[0].iPosition = 0; m_Marker[0].iPosition = (int)m_strText.length(); // Delete all offsets and recalculate them m_vLineOffsets.clear(); // Create a new offset SLineEntry offset; offset.bLineBreak = false; offset.iOffset = 0; m_vLineOffsets.push_back(offset); UpdateOffsets(0); UpdateMarker(); if(m_iLineCount > 0) ScrollToMarker(); }
/*virtual*/ void WBCompEldMapMarker::HandleEvent( const WBEvent& Event ) { Super::HandleEvent( Event ); STATIC_HASHED_STRING( OnMoved ); STATIC_HASHED_STRING( OnTurned ); STATIC_HASHED_STRING( OnInitializedQueued ); STATIC_HASHED_STRING( OnDestroyed ); const HashedString EventName = Event.GetEventName(); if( EventName == sOnInitializedQueued ) { AddMarker(); UpdateMarker(); } else if( EventName == sOnMoved || sOnTurned ) { UpdateMarker(); } else if( EventName == sOnDestroyed ) { RemoveMarker(); } }
LTBOOL CBodyFX::Update() { if (!m_pClientDE || !m_hServerObject || m_bWantRemove) return LTFALSE; switch ( m_bs.eBodyState ) { case eBodyStateFade: UpdateFade(); break; } if (g_pGameClientShell->GetGameType() != SINGLE && m_bs.nClientId != (uint8)-1) { UpdateMarker(); } return LTTRUE; }
//************************************************************************ // CLCDInput::ProcessKeyEvent //************************************************************************ LRESULT CLCDInput::ProcessKeyEvent(int Code, WPARAM wParam, LPARAM lParam) { // Event verarbeiten if(Code == HC_ACTION) { KBDLLHOOKSTRUCT *key = (KBDLLHOOKSTRUCT *)(lParam); bool bKeyDown = !(key->flags & LLKHF_UP); bool bToggled = (m_acKeyboardState[key->vkCode] & 0x0F) != 0; if(bKeyDown) bToggled = !bToggled; m_acKeyboardState[key->vkCode] = (bKeyDown?0x80:0x00) | (bToggled?0x01:0x00); if(key->vkCode == VK_LSHIFT || key->vkCode == VK_RSHIFT) m_acKeyboardState[VK_SHIFT] = m_acKeyboardState[key->vkCode]; else if(key->vkCode == VK_LCONTROL || key->vkCode == VK_RCONTROL) m_acKeyboardState[VK_CONTROL] = m_acKeyboardState[key->vkCode]; else if(key->vkCode == VK_LMENU || key->vkCode == VK_RMENU) m_acKeyboardState[VK_MENU] = m_acKeyboardState[key->vkCode]; /* if(bKeyDown) TRACE(_T("Key pressed: %i\n"),key->vkCode); else TRACE(_T("Key released: %i\n"),key->vkCode); */ // Only handle Keyup if(bKeyDown) { // Actions with Control/Menu keys if((m_acKeyboardState[VK_LMENU] & 0x80 || m_acKeyboardState[VK_CONTROL] & 0x80) && m_acKeyboardState[VK_SHIFT] & 0x80) { ActivateKeyboardLayout((HKL)HKL_NEXT,0);//KLF_SETFORPROCESS); TRACE(_T("Keyboardlayout switched!\n")); return 1; } int res = 0,size = 0,dir = MARKER_HORIZONTAL,scroll = 0; /* if(key->vkCode == VK_DELETE) { dir = MARKER_HOLD; res = -1; if(m_strText[m_Marker[0].iPosition] == '\r') res = -2; if(m_strText.length() >= m_Marker[0].iPosition + -res) { m_strText.erase(m_Marker[0].iPosition,-res); scroll = 1; size = 1; } else { res = 0; } } else */if(key->vkCode == VK_BACK ) { if(m_Marker[0].iPosition != 0) { res = -1; if(m_strText[m_Marker[0].iPosition+res] == '\n') res = -2; m_strText.erase(m_Marker[0].iPosition+res,-res); scroll = 1; size = res; } } // Marker navigation else if (key->vkCode == VK_INSERT) { m_bInsert = !m_bInsert; } else if(key->vkCode == VK_HOME) { res = m_vLineOffsets[m_Marker[0].iLine].iOffset - m_Marker[0].iPosition; scroll = 1; } else if(key->vkCode == VK_END) { if(m_vLineOffsets.size()-1 == m_Marker[0].iLine) res = (int)m_strText.length() - m_Marker[0].iPosition; else res = (m_vLineOffsets[m_Marker[0].iLine+1].iOffset - 1 - m_vLineOffsets[m_Marker[0].iLine+1].bLineBreak) -m_Marker[0].iPosition; scroll = 1; } else if(key->vkCode == VK_UP) { res = -1; dir = MARKER_VERTICAL; } else if(key->vkCode == VK_DOWN) { res = 1; dir = MARKER_VERTICAL; } else if(key->vkCode == VK_LEFT) res = -1; else if(key->vkCode == VK_RIGHT) res = 1; else { #ifdef _UNICODE TCHAR output[4]; #else unsigned char output[2]; #endif if(key->vkCode == VK_RETURN) { bool bCtrlDown = (m_acKeyboardState[VK_CONTROL] & 0x80) != 0; if( bCtrlDown != (m_iBreakKeys == KEYS_RETURN)) { DeactivateInput(); //m_pParent->OnInputFinished(); return 1; } else { res = 2; output[0] = '\r'; output[1] = '\n'; output[2] = 0; } } else { #ifdef _UNICODE res = ToUnicode(key->vkCode,key->scanCode,m_acKeyboardState,output,4,0); #else res = ToAscii( key->vkCode,key->scanCode,m_acKeyboardState,(WORD*)output,0); #endif } if(res <= 0) res = 0; else { if(output[0] != '\r' && output[0] <= 0x001F) return 1; if(m_bInsert || m_strText[m_Marker[0].iPosition] == '\r') m_strText.insert(m_Marker[0].iPosition,(TCHAR*)output,res); else m_strText.replace(m_Marker[0].iPosition,res,(TCHAR*)output); scroll = 1; size = res; } } if(res != 0) { if(dir != MARKER_HOLD) { MoveMarker(dir,res); } UpdateOffsets(size); UpdateMarker(); ScrollToMarker(); m_lInputTime = GetTickCount(); } //WrapLine(); // ---- // Block this KeyEvent } return 1; } return CallNextHookEx(m_hKBHook, Code, wParam, lParam); }