void CWndGuideTextMgr::OnInitialUpdate() { CWndNeuz::OnInitialUpdate(); DelWndStyle(WBS_MOVE); AddWndStyle(WBS_TOPMOST); m_wndTitleBar.SetVisible( FALSE ); m_bVisible = FALSE; CWndText* pWndText; CWndButton* pWndButton; pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 ); m_Rect[0] = pWndText->GetWndRect(); pWndButton = (CWndButton*)GetDlgItem( WIDC_BACK ); m_Rect[1] = pWndButton->GetWndRect(); #if __VER >= 12 // __MOD_TUTORIAL pWndButton->SetVisible(FALSE); #endif pWndButton = (CWndButton*)GetDlgItem( WIDC_NEXT ); m_Rect[2] = pWndButton->GetWndRect(); m_Rect[3] = GetWndRect(); m_nCurrentVector = 0; m_VecGuideText.clear(); m_pTextureBG = m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_THEME, "GuideBG.tga" ), 0, TRUE ); }
void CUIWindow::GetAbsoluteRect(Frect& r) { //. Frect rect; if(GetParent() == NULL){ GetWndRect (r); return; } //. rect = GetParent()->GetAbsoluteRect(); GetParent()->GetAbsoluteRect(r); Frect rr; GetWndRect (rr); r.left += rr.left; r.top += rr.top; r.right = r.left + GetWidth(); r.bottom = r.top + GetHeight(); //. return rect; }
void CUIGlobalMap::ClipByVisRect() { Frect r = GetWndRect(); Frect clip = GetClipperRect(); if (r.x2<clip.width()) r.x1 += clip.width()-r.x2; if (r.y2<clip.height()) r.y1 += clip.height()-r.y2; if (r.x1>0.0f) r.x1 = 0.0f; if (r.y1>0.0f) r.y1 = 0.0f; SetWndPos (r.x1,r.y1); }
void CWndNeuz::OnSize(UINT nType, int cx, int cy) { if(IsWndRoot()) return; if( m_bTile ) //m_strTexture.IsEmpty() == FALSE ) { CRect rectWnd = GetWndRect(); CSize size2( rectWnd.Width(), rectWnd.Height() ); CSize sizeDiv = size2; sizeDiv.cx %= 16; sizeDiv.cy %= 16; size2.cx /= 16; size2.cx *= 16; size2.cy /= 16; size2.cy *= 16; if( sizeDiv.cx ) size2.cx += 16; if( sizeDiv.cy ) size2.cy += 16; rectWnd.bottom = rectWnd.top + size2.cy; rectWnd.right = rectWnd.left + size2.cx; SetWndRect( rectWnd, FALSE ); } AdjustWndBase(); m_wndTitleBar.Replace(); CWndBase::OnSize( nType, cx, cy ); // if( rectOld.Width() != m_rectClient.Width() || rectOld.Height() != m_rectClient.Height() ) // 차일드 윈도우들의 사이즈를 조절 /* for(int i = 0; i < m_wndArray.GetSize(); i++) { CWndBase* pWnd = (CWndBase*)m_wndArray.GetAt(i); if(pWnd->IsWndStyle(WBS_DOCKED))// && pWnd->IsWndStyle(WBS_CHILD)) { CRect rect = pWnd->GetWindowRect(TRUE); rect.SetRect(0,0,cx,cy); pWnd->SetWndRect(rect); } } */ /* if(IsWndStyle(WBS_DOCKED))// && IsWndStyle(WBS_CHILD)) { m_wndTitleBar.m_wndMinimize.SetVisible(FALSE); m_wndTitleBar.m_wndMaximize.SetVisible(FALSE); } */ }
void SQRButton::DrawWndText() { CFPos pt = GetCursorPos(); CFRect rt; GetWndRect( rt ); rt.right -= rt.left; rt.bottom -= rt.top; rt.left = rt.top = 0.0f; if( IsHeld() ) DrawText( GetWndTextW(), m_ClickDownColor, m_ClickDownBcColor ); else if( IsInWndArea( pt.x, pt.y ) && IsEnable() && IsLastMouseMsgWnd() ) DrawText( GetWndTextW(), m_MouseOverColor, m_MouseOverBcColor ); else SQRWnd::DrawWndText(); }
void WndTrailModify::Update() { //UPDATE DEFAULT ui::Wnd::UpdateDefault(); DWORD &dwStyle = m_tWindowInfo.dwStyle; ui::Manager::_tagINPUTINFO *pInputInfo = ui::Manager::GetInstance()->GetInputInfoBuffer(); if (dwStyle & FWS_VISIBLE && !(dwStyle & FWS_DISABLE)) { ui::Wnd::UpdateChild(); if(pInputInfo->eType == UIMT_MS_BTNDOWN && pInputInfo->dwData & MK_LBUTTON) { if(!m_pNode) return; RECT rect; GetWndRect(&rect); if (::PtInRect(&rect,pInputInfo->ptMouse)) { m_pBtnConfirm->GetWndRect(&rect); if(::PtInRect(&rect,pInputInfo->ptMouse) && m_pBtnConfirm->IsVisible()) { WndViewer * pWndViewer = (WndViewer *)GetParent(); WndTrailTree *pWndTrailTree = pWndViewer->GetWndTrailTree(); char strValue[128]; m_pEditBox->GetEditText(strValue,127); if (strlen(strValue)>0) { m_pNode->SetValue(strValue); pWndTrailTree->SaveTrailFile(); } ShowWnd(false); } m_pBtnCancel->GetWndRect(&rect); if(::PtInRect(&rect,pInputInfo->ptMouse) && m_pBtnCancel->IsVisible()) { ShowWnd(false); } } } } }
//----------------------------------------------------------------------------- void CWndHelperWebBox::OnInitialUpdate( void ) { CWndNeuz::OnInitialUpdate(); SetTitle( prj.GetText( TID_GAME_HELPER_WEB_BOX_ICON_TITLE ) ); if( g_Option.m_nResWidth >= 1024 && g_Option.m_nResHeight >= 768 ) { CRect rectHelperWebBox = GetWndRect(); rectHelperWebBox.right = 1024; rectHelperWebBox.bottom = 768; SetWndRect( rectHelperWebBox ); } DelWndStyle( WBS_MOVE ); AddWndStyle( WBS_TOPMOST ); CHelperWebBox::GetInstance()->Initialize(); MoveParentCenter(); }
float CUIGlobalMap::CalcOpenRect(const Fvector2& center_point, Frect& map_desired_rect, float tgt_zoom) { Fvector2 new_center_pt; // calculate desired rect in new zoom map_desired_rect.set (0.0f,0.0f, BoundRect().width()*tgt_zoom,BoundRect().height()*tgt_zoom); // calculate center point in new zoom (center_point is in identity global map space) new_center_pt.set (center_point.x*tgt_zoom,center_point.y*tgt_zoom); // get vis width & height Frect vis_abs_rect = m_mapWnd->ActiveMapRect(); float vis_w = vis_abs_rect.width(); float vis_h = vis_abs_rect.height(); // calculate center delta from vis rect Fvector2 delta_pos; delta_pos.set (new_center_pt.x-vis_w*0.5f,new_center_pt.y-vis_h*0.5f); // correct desired rect map_desired_rect.sub (delta_pos.x,delta_pos.y); // clamp pos by vis rect const Frect& r = map_desired_rect; Fvector2 np = r.lt; if (r.x2<vis_w) np.x += vis_w-r.x2; if (r.y2<vis_h) np.y += vis_h-r.y2; if (r.x1>0.0f) np.x = 0.0f; if (r.y1>0.0f) np.y = 0.0f; np.sub (r.lt); map_desired_rect.add (np.x,np.y); // calculate max way dist float dist = 0.f; Frect s_rect,t_rect; s_rect.div (GetWndRect(),GetCurrentZoom(),GetCurrentZoom()); t_rect.div (map_desired_rect,tgt_zoom,tgt_zoom); Fvector2 cpS,cpT; s_rect.getcenter (cpS); t_rect.getcenter (cpT); dist = cpS.distance_to(cpT); return dist; }
void CUIActorMenu::InfoCurItem( CUICellItem* cell_item ) { if ( !cell_item ) { m_ItemInfo->InitItem( NULL ); return; } PIItem current_item = (PIItem)cell_item->m_pData; PIItem compare_item = NULL; u32 compare_slot = current_item->GetSlot(); if ( compare_slot != NO_ACTIVE_SLOT ) { compare_item = m_pActorInvOwner->inventory().m_slots[compare_slot].m_pIItem; } #ifdef TRADE_TIP m_ItemInfo->m_TradeTip = ""; if (m_currMenuMode == mmTrade) { // calculation tips CInventoryOwner* item_owner = smart_cast<CInventoryOwner*>(current_item->m_pInventory->GetOwner()); if (!current_item->CanTrade() || ( item_owner && item_owner == m_pActorInvOwner && !m_pPartnerInvOwner->trade_parameters().enabled(CTradeParameters::action_buy(0), current_item->object().cNameSect()) ) ) m_ItemInfo->m_TradeTip = "st_no_trade_tip_1"; else if (current_item->GetCondition() < m_pPartnerInvOwner->trade_parameters().buy_item_condition_factor) m_ItemInfo->m_TradeTip = "st_no_trade_tip_2"; } #endif m_ItemInfo->InitItem ( current_item, compare_item ); float dx_pos = GetWndRect().left; m_ItemInfo->AlignHintWndPos( Frect().set( 0.0f, 0.0f, 1024.0f - dx_pos, 768.0f ), 10.0f, dx_pos ); }
void CDDrawRecord::ClearScreen(int iWnd, DWORD color) { RECT dst; GetWndRect(iWnd, dst); DrawRect(color, &dst, lpDDSBack); }
LPDIRECTDRAWSURFACE7 CDDrawRecord::PlayYUV(BYTE* y, BYTE* u, BYTE* v, int iWnd, LPDIRECTDRAWSURFACE7 lpDDSView, RECT SurfaceRt, RECT& dst) { GetWndRect(iWnd, dst); return CDDraw::PlayYUV(y, u, v, iWnd, lpDDSView, SurfaceRt); }
int32 SQRScrollBar::Create( const WndCreateParam& param ) { WndCreateParam newParam = param; newParam.uStyle |= WS_CHILD; if( FAILED( SQRWnd::Create( newParam ) ) ) return GERROR; CFRect rt; CFRect rt1,rt2,rt3; GetWndRect( rt ); CFRect rtWnd = rt; float PressW; if( GetStyle()&SS_HSCROLL ) { PressW = min( rtWnd.Height(), rtWnd.Width() / 3 ); rt1 = CFRect( 0, 0, PressW, rtWnd.Height() ); rt2 = CFRect( rtWnd.Width() - PressW, 0, rtWnd.Width(), rtWnd.Height() ); rt3 = rt1; rt3.left = rt1.right; rt3.right = rt3.left + rt1.Width(); } else { PressW = min( rtWnd.Width(), rtWnd.Height() / 3 ); rt1 = CFRect( 0, 0, rtWnd.Width(), PressW ); rt2 = CFRect( 0, rtWnd.Height() - PressW, rtWnd.Width(), rtWnd.Height() ); rt3 = rt1; rt3.top = rt1.bottom; rt3.bottom = rt3.top + rt1.Height(); } WndCreateParam childParam; childParam.x = rt1.left; childParam.y = rt1.top; childParam.width = rt1.Width(); childParam.height = rt1.Height(); childParam.pParentWnd = this; childParam.font_size = 12; m_pPressButton1->Create( childParam ); m_pPressButton1->SetMouseWheel(true); childParam.x = rt2.left; childParam.y = rt2.top; childParam.width = rt2.Width(); childParam.height = rt2.Height(); m_pPressButton2->Create( childParam ); m_pPressButton2->SetMouseWheel(true); childParam.x = rt3.left; childParam.y = rt3.top; childParam.width = rt3.Width(); childParam.height = rt3.Height(); m_pScrollBar->Create( childParam ); m_pScrollBar->SetMouseWheel(true); //m_pScrollBar->ShowWnd(false); if( GetStyle()&SS_HSCROLL ) { m_pPressButton1->SetLockFlag( LOCK_LEFT|LOCK_TOP|LOCK_BOTTOM ); m_pPressButton2->SetLockFlag( LOCK_RIGHT|LOCK_TOP|LOCK_BOTTOM); m_pScrollBar->SetLockFlag(LOCK_LEFT|LOCK_RIGHT|LOCK_TOP|LOCK_BOTTOM); } else { m_pPressButton1->SetLockFlag( LOCK_TOP|LOCK_LEFT|LOCK_RIGHT ); m_pPressButton2->SetLockFlag( LOCK_BOTTOM|LOCK_LEFT|LOCK_RIGHT ); m_pScrollBar->SetLockFlag(LOCK_TOP|LOCK_BOTTOM|LOCK_LEFT|LOCK_RIGHT); } m_fRange = 100; m_fPageSize = 10; m_fCurPos = 0; RefreshThumbState(); SetMouseWheel(true); return 0; }
bool CUIWindow::OnMouse(float x, float y, EUIMessages mouse_action) { Frect wndRect = GetWndRect(); cursor_pos.x = x; cursor_pos.y = y; if( WINDOW_LBUTTON_DOWN == mouse_action ) { static u32 _last_db_click_frame = 0; u32 dwCurTime = Device.dwTimeContinual; if( (_last_db_click_frame!=Device.dwFrame) && (dwCurTime-m_dwLastClickTime < DOUBLE_CLICK_TIME) ) { mouse_action = WINDOW_LBUTTON_DB_CLICK; _last_db_click_frame = Device.dwFrame; } m_dwLastClickTime = dwCurTime; } if(GetParent()== NULL) { if(!wndRect.in(cursor_pos)) return false; //получить координаты относительно окна cursor_pos.x -= wndRect.left; cursor_pos.y -= wndRect.top; } //если есть дочернее окно,захватившее мышь, то //сообщение направляем ему сразу if(m_pMouseCapturer) { m_pMouseCapturer->OnMouse(cursor_pos.x - m_pMouseCapturer->GetWndRect().left, cursor_pos.y - m_pMouseCapturer->GetWndRect().top, mouse_action); return true; } // handle any action switch (mouse_action){ case WINDOW_MOUSE_MOVE: OnMouseMove(); break; case WINDOW_MOUSE_WHEEL_DOWN: OnMouseScroll(WINDOW_MOUSE_WHEEL_DOWN); break; case WINDOW_MOUSE_WHEEL_UP: OnMouseScroll(WINDOW_MOUSE_WHEEL_UP); break; case WINDOW_LBUTTON_DOWN: if(OnMouseDown(MOUSE_1)) return true; break; case WINDOW_RBUTTON_DOWN: if(OnMouseDown(MOUSE_2)) return true; break; case WINDOW_CBUTTON_DOWN: if(OnMouseDown(MOUSE_3)) return true; break; case WINDOW_LBUTTON_DB_CLICK: if (OnDbClick()) return true; break; default: break; } //Проверка на попадание мыши в окно, //происходит в обратном порядке, чем рисование окон //(последние в списке имеют высший приоритет) WINDOW_LIST::reverse_iterator it = m_ChildWndList.rbegin(); for(; it!=m_ChildWndList.rend(); ++it) { CUIWindow* w = (*it); Frect wndRect = w->GetWndRect(); if (wndRect.in(cursor_pos) ) { if(w->IsEnabled()) { if( w->OnMouse(cursor_pos.x -w->GetWndRect().left, cursor_pos.y -w->GetWndRect().top, mouse_action))return true; } } else if (w->IsEnabled() && w->CursorOverWindow()) { if( w->OnMouse(cursor_pos.x -w->GetWndRect().left, cursor_pos.y -w->GetWndRect().top, mouse_action))return true; } } return false; }
void CWndGuideTextMgr::_SetGuideText(GUIDE_STRUCT guide) #endif { CWndText* pWndText; CWndButton* pWndButton; pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 ); pWndText->SetWndRect( m_Rect[0] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_BACK ); pWndButton->SetWndRect( m_Rect[1] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_NEXT ); pWndButton->SetWndRect( m_Rect[2] ); SetWndRect( m_Rect[3] ); #if __VER >= 12 // __MOD_TUTORIAL if(bIsNext) pWndButton->SetVisible(TRUE); else pWndButton->SetVisible(FALSE); #endif m_bVisible = TRUE; m_strHelpKey = guide.m_str; pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 ); #if __VER >= 12 // __MOD_TUTORIAL pWndText->SetString(""); pWndText->m_string.AddParsingString(LPCTSTR(guide.m_str)); pWndText->ResetString(); #else pWndText->SetString( (guide.m_nkey == CWndGuideSystem::KEY) ? prj.GetHelp( m_strHelpKey ) : guide.m_str ); #endif CRect rect = pWndText->GetWndRect(); pWndText->m_string.Align( m_pFont ); int nLine = pWndText->m_string.GetLineCount(); if( nLine < 10 ) { if( nLine < 8 ) nLine = 8; CRect clientrect = GetWndRect(); int ngap = rect.Height() - (nLine * 22); clientrect.top += ngap; SetWndRect(clientrect); rect.bottom -= ngap; pWndText->SetWndRect( rect ); CRect ptRect; #ifndef __MOD_TOTURIAL pWndButton= (CWndButton*)GetDlgItem( WIDC_BACK ); ptRect = pWndButton->GetWndRect(); ptRect.OffsetRect( 0, -ngap ); pWndButton->SetWndRect(ptRect); #endif pWndButton= (CWndButton*)GetDlgItem( WIDC_NEXT ); ptRect = pWndButton->GetWndRect(); ptRect.OffsetRect( 0, -ngap ); pWndButton->SetWndRect(ptRect); pWndText->m_wndScrollBar.m_bVisible = FALSE; } else { /* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 ); pWndText->SetWndRect( m_Rect[0] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_BACK ); pWndButton->SetWndRect( m_Rect[1] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_NEXT ); pWndButton->SetWndRect( m_Rect[2] ); SetWndRect( m_Rect[3] ); */ pWndText->m_wndScrollBar.m_bVisible = TRUE; pWndText->SetWndRect( rect ); } CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); CRect rectGuide = pWndGuide->GetWindowRect( TRUE ); CPoint ptGuide = rectGuide.TopLeft(); CPoint ptMove; pWndGuide->m_bVisible = TRUE; CRect windowrect = GetWindowRect( TRUE ); if( ptGuide.x > windowrect.Width() ) ptMove = ptGuide - CPoint( windowrect.Width(), 0 ); else ptMove = ptGuide + CPoint( rectGuide.Width(), 0 ); ptMove.y = rectGuide.bottom; ptMove.y -= windowrect.Height(); if( ptMove.y < 0 ) ptMove.y = rectGuide.top; Move( ptMove ); }
void SQRCheckButton::DrawWndText() { UIWString str = GetWndTextW(); int32 nSize = str.size(); if( !nSize ) return; CFPos pt = GetCursorPos(); CFRect rt; GetWndRect(rt); rt.right -= rt.left; rt.bottom -= rt.top; rt.left = rt.top = 0; int32 i = 0; const wchar_t* szText = str.c_str(); for( ; i < nSize - 1; i++ ) { if( str[i] == '\\' && str[ i + 1 ] == 'n' ) str[i] = str[ i + 1 ] = 0; if( !str[i] && !str[ i + 1 ] ) { if( !m_bCheck ) szText += i + 2; break; } } //处于选中状态 if( m_bCheck ) { if( IsHeld() ) { if( IsInWndArea( pt.x, pt.y ) ) DrawText( szText, m_ClickDownColor, m_ClickDownBcColor); else if( IsEnable() ) DrawText( szText, m_hWnd->m_EnableColor, m_hWnd->m_EnableBcColor ); else DrawText( szText, m_hWnd->m_DisableColor, m_hWnd->m_DisableBcColor ); } else { if( IsInWndArea( pt.x, pt.y ) && IsEnable() ) DrawText( szText, m_MouseOverColor, m_MouseOverBcColor ); else if( IsEnable() ) DrawText( szText, m_hWnd->m_EnableColor, m_hWnd->m_EnableBcColor ); else DrawText( szText, m_hWnd->m_DisableColor, m_hWnd->m_DisableBcColor ); } } //非选中状态 else if( !m_bCheck ) { if( IsHeld() ) { if( IsInWndArea( pt.x, pt.y ) ) DrawText( szText, m_UncheckClickDownColor, m_UncheckClickDownBcColor ); else DrawText( szText, m_UncheckEnableColor, m_UncheckEnableBcColor ); } else { if( IsInWndArea( pt.x, pt.y ) && IsEnable() ) DrawText( szText, m_UncheckMouseOverColor, m_UncheckMouseOverBcColor ); else if( IsEnable() ) DrawText( szText, m_UncheckEnableColor, m_UncheckEnableBcColor ); else DrawText( szText, m_UncheckDisableColor, m_UncheckDisableBcColor ); } } }
void CUIActorMenu::InfoCurItem( CUICellItem* cell_item ) { if ( !cell_item ) { m_ItemInfo->InitItem( NULL ); return; } PIItem current_item = (PIItem)cell_item->m_pData; PIItem compare_item = NULL; u16 compare_slot = current_item->BaseSlot(); if ( compare_slot != NO_ACTIVE_SLOT ) { compare_item = m_pActorInvOwner->inventory().ItemFromSlot(compare_slot); } if(GetMenuMode()==mmTrade) { CInventoryOwner* item_owner = smart_cast<CInventoryOwner*>(current_item->m_pInventory->GetOwner()); u32 item_price = u32(-1); if(item_owner && item_owner==m_pActorInvOwner) item_price = m_partner_trade->GetItemPrice(current_item, true); else item_price = m_partner_trade->GetItemPrice(current_item, false); //if(item_price>500) // item_price = iFloor(item_price/10+0.5f)*10; CWeaponAmmo* ammo = smart_cast<CWeaponAmmo*>(current_item); if(ammo) { for( u32 j = 0; j < cell_item->ChildsCount(); ++j ) { u32 tmp_price = 0; PIItem jitem = (PIItem)cell_item->Child(j)->m_pData; CInventoryOwner* ammo_owner = smart_cast<CInventoryOwner*>(jitem->m_pInventory->GetOwner()); if(ammo_owner && ammo_owner==m_pActorInvOwner) tmp_price = m_partner_trade->GetItemPrice(jitem, true); else tmp_price = m_partner_trade->GetItemPrice(jitem, false); //if(tmp_price>500) // tmp_price = iFloor(tmp_price/10+0.5f)*10; item_price += tmp_price; } } if( !current_item->CanTrade() || (!m_pPartnerInvOwner->trade_parameters().enabled(CTradeParameters::action_buy(0), current_item->object().cNameSect()) && item_owner && item_owner==m_pActorInvOwner) ) m_ItemInfo->InitItem ( cell_item, compare_item, u32(-1), "st_no_trade_tip_1" ); else if(current_item->GetCondition()<m_pPartnerInvOwner->trade_parameters().buy_item_condition_factor) m_ItemInfo->InitItem ( cell_item, compare_item, u32(-1), "st_no_trade_tip_2" ); else m_ItemInfo->InitItem ( cell_item, compare_item, item_price ); } else m_ItemInfo->InitItem ( cell_item, compare_item, u32(-1)); // m_ItemInfo->InitItem ( current_item, compare_item ); float dx_pos = GetWndRect().left; fit_in_rect(m_ItemInfo, Frect().set( 0.0f, 0.0f, UI_BASE_WIDTH - dx_pos, UI_BASE_HEIGHT ), 10.0f, dx_pos ); }