// ControlBox.cpp: implementation of the CControlBox class. // ////////////////////////////////////////////////////////////////////// #include "ControlBox.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CControlBox::CControlBox(int ix,int iy,int iLayerWidth,int iLayerHeight,int iwidth,int iheight,UINT uiBG): CPanel(ix,iy,iwidth,iheight,uiBG) { iLayerX=0; iLayerY=0; CPanel::iLayerHeight=iLayerHeight; CPanel::iLayerWidth=iLayerWidth; HDC hDC=GetDC(GameEngine::GetEngine()->GetWindow()); bmpBackGround=new Bitmap(hDC,IDB_TREE_BG, GameEngine::GetEngine()->GetInstance()); //ReleaseDC(GameEngine::GetEngine()->GetWindow(),hDC); CPanel::ShowPanel(true); paper=new CPaper(160,20,700,800,620,560,IDB_TREE_BG_LEFTTOP); int i=0; for(;isetButtonIndex(i*2); toggleButton[i*2+1]=new CToggleButton(60,200+i*40,IDB_ELEMENT_C+i*2+1,IDB_ELEMENT_OUT); toggleButton[i*2+1]->setButtonIndex(i*2+1); } for(i=NUMBER_OF_TOGLLE_BUTTON;isetButtonIndex(i); } for(i=0;isetButtonIndex(NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+i*2); toggleButton[NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+i*2+1]=new CToggleButton(60,40+i*40,IDB_MOUSE+i*2+1,IDB_ELEMENT_OUT); toggleButton[NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+i*2+1]->setButtonIndex(NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+i*2+1); } toggleButton[NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_CONTROLS-2]=new CToggleButton(20,120,IDB_ACCEPT,IDB_BOND_OUT); toggleButton[NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_CONTROLS-2]->setButtonIndex(NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_CONTROLS-2); toggleButton[NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_CONTROLS-1]=new CToggleButton(20,154,IDB_ACCEPT+1,IDB_BOND_OUT); toggleButton[NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_CONTROLS-1]->setButtonIndex(NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_CONTROLS-1); Bitmap ** bmp=new Bitmap*[NUMBER_OF_TOGLLE_BUTTON]; for(i=0;igetImage(); } paper->SetElements(bmp); GameEngine::GetEngine()->setSelectedElement(-1); GameEngine::GetEngine()->setSelectedBond(-1); GameEngine::GetEngine()->setSelectedControl(0); toggleButton[NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON]->setPush(true); enabled=false; } CControlBox::~CControlBox() { delete paper; } void CControlBox::DrawScreen(HDC hDC){ if(!enabled) return; paper->DrawScreen(hDC); HDC _hLayerDC = CreateCompatibleDC(hDC); HBITMAP _hLayerBitmap = CreateCompatibleBitmap(hDC,iLayerWidth, iLayerHeight); SelectObject(_hLayerDC, _hLayerBitmap); //do painting int i=0; for(;i<=iLayerWidth/90;i++){ for(int j=0;j<=iLayerHeight/90;j++){ bmpBackGround->Draw(_hLayerDC,i*90,j*90); } } i=0; for(;iDrawScreen(_hLayerDC); } CPanel::DrawScreen(_hLayerDC); DeleteObject(_hLayerBitmap); DeleteDC(_hLayerDC); } void CControlBox::MouseMove(int x, int y) { if(!enabled) return; int i=0; for(;iMouseMove(x-GetX(),y-GetY()); } paper->MouseMove(x,y); CPanel::MouseMove(x,y); } bool CControlBox::MouseButtonDown(int x, int y, bool bLeft,WPARAM wParam) { if(!enabled) return false; int i=0; for(;iMouseButtonDown(x-GetX(),y-GetY(),bLeft)){ if(i==NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS+3 || i==NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS+4|| i==NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS+5){ int iSelected; if((iSelected=GameEngine::GetEngine()->getSelectedElement())>=0) PrevPushed=iSelected; else if((iSelected=GameEngine::GetEngine()->getSelectedBond())>=0) PrevPushed=iSelected+NUMBER_OF_TOGLLE_BUTTON; else if((iSelected=GameEngine::GetEngine()->getSelectedControl())>=0) PrevPushed=iSelected+NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS; } for(int j=0;jsetPush(false); } if(isetSelectedElement(i); GameEngine::GetEngine()->setSelectedBond(-1); GameEngine::GetEngine()->setSelectedControl(-1); } else if(isetSelectedElement(-1); GameEngine::GetEngine()->setSelectedBond(i-NUMBER_OF_TOGLLE_BUTTON); GameEngine::GetEngine()->setSelectedControl(-1); } else if(isetSelectedElement(-1); GameEngine::GetEngine()->setSelectedBond(-1); GameEngine::GetEngine()->setSelectedControl(i-(NUMBER_OF_BONDS+NUMBER_OF_TOGLLE_BUTTON)); } break; } } if((i=paper->MouseButtonDown(x,y,bLeft,wParam))==1){ MouseButtonUp(x,y,bLeft); return true; } if(i==-1)MouseButtonUp(x,y,bLeft); CPanel::MouseButtonDown(x,y,bLeft); return false; } void CControlBox::MouseButtonUp(int x, int y, bool bLeft) { if(!enabled) return; int i=0; for(;iMouseButtonUp(x-GetX(),y-GetY(),bLeft); if((i==NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS+3||i==NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS+4||i==NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS+5) && toggleButton[i]->isPushed()){ toggleButton[i]->setPush(false); toggleButton[PrevPushed]->setPush(true); GameEngine::GetEngine()->setSelectedElement(PrevPushedsetSelectedBond((PrevPushed>=NUMBER_OF_TOGLLE_BUTTON)&&(PrevPushedsetSelectedControl(PrevPushed>=NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS?PrevPushed-(NUMBER_OF_TOGLLE_BUTTON+NUMBER_OF_BONDS):-1); } } paper->MouseButtonUp(x,y,bLeft); CPanel::MouseButtonUp(x,y,bLeft); } void CControlBox::getReadyForACompound() { paper->getReadyForACompound(); }