void IngameWindow::MouseLeftUp(const MouseCoords& mc) { // Bewegung stoppen isMoving = false; // beiden Buttons oben links und rechts prfen const Rect rec[2] = { GetLeftButtonRect(), GetRightButtonRect() }; for(unsigned i = 0; i < 2; ++i) { button_state[i] = BUTTON_UP; if(Coll(mc.x, mc.y, rec[i])) { if(i == 0 && (!IsModal() || closeOnRightClick_)) Close(); else if(i==1 && !IsModal()) { SetMinimized(!IsMinimized()); LOADER.GetSoundN("sound", 113)->Play(255, false); } } } }
void IngameWindow::MouseLeftDown(const MouseCoords& mc) { // Maus muss sich auf der Titelleiste befinden Rect title_rect( static_cast<unsigned short>(pos_.x + LOADER.GetImageN("resource", 36)->getWidth()), pos_.y, static_cast<unsigned short>(width_ - LOADER.GetImageN("resource", 36)->getWidth() - LOADER.GetImageN("resource", 37)->getWidth()), LOADER.GetImageN("resource", 43)->getHeight() ); if(Coll(mc.x, mc.y, title_rect)) { // Start mit Bewegung isMoving = true; lastMousePos = DrawPoint(mc.x, mc.y); } // beiden Buttons oben links und rechts prfen const Rect rec[2] = { GetLeftButtonRect(), GetRightButtonRect() }; for(unsigned char i = 0; i < 2; ++i) { if(Coll(mc.x, mc.y, rec[i])) button_state[i] = BUTTON_PRESSED; } }
void IngameWindow::MouseLeftUp(const MouseCoords& mc) { // Bewegung stoppen move = false; // beiden Buttons oben links und rechts prfen const Rect rec[2] = { GetLeftButtonRect(), GetRightButtonRect() }; for(unsigned char i = 0; i < 2; ++i) { button_state[i] = BUTTON_UP; if(Coll(mc.x, mc.y, rec[i])) { if(i) { SetMinimized(!GetMinimized()); LOADER.GetSoundN("sound", 113)->Play(255, false); } else if(!modal) Close(); } } }
void IngameWindow::MouseMove(const MouseCoords& mc) { // Fenster bewegen, wenn die Bewegung aktiviert wurde if(isMoving) { DrawPoint newMousePos(mc.x, mc.y); DrawPoint newPos = pos_ + newMousePos - lastMousePos; if(newPos.x < 0) { newMousePos.x -= newPos.x; newPos.x = 0; } if(newPos.y < 0) { newMousePos.y -= newPos.y; newPos.y = 0; } if(newPos.x > VIDEODRIVER.GetScreenWidth() - width_) { newMousePos.x -= newPos.x - (VIDEODRIVER.GetScreenWidth() - width_); newPos.x = VIDEODRIVER.GetScreenWidth() - width_; } if(newPos.y > VIDEODRIVER.GetScreenHeight() - height_) { newMousePos.y -= newPos.y - (VIDEODRIVER.GetScreenHeight() - height_); newPos.y = VIDEODRIVER.GetScreenHeight() - height_; } // Fix mouse position if moved too far if(newMousePos.x - mc.x || newMousePos.y - mc.y) VIDEODRIVER.SetMousePos(newMousePos); pos_ = newPos; lastMousePos = DrawPoint(mc.x, mc.y); } // beiden Buttons oben links und rechts prfen const Rect rec[2] = { GetLeftButtonRect(), GetRightButtonRect() }; for(unsigned char i = 0; i < 2; ++i) { if(Coll(mc.x, mc.y, rec[i])) { if(mc.ldown) button_state[i] = BUTTON_PRESSED; else button_state[i] = BUTTON_HOVER; } else button_state[i] = BUTTON_UP; } }
void IngameWindow::MouseMove(const MouseCoords& mc) { // Fenster bewegen, wenn die Bewegung aktiviert wurde if(move) { int nx, ny; int NewMouseX = mc.x; int NewMouseY = mc.y; nx = x + (mc.x - last_x); ny = y + (mc.y - last_y); if(nx < 0) { NewMouseX -= nx; nx = 0; } if(ny < 0) { NewMouseY -= ny; ny = 0; } if(nx > VIDEODRIVER.GetScreenWidth() - width) { NewMouseX -= nx - (VIDEODRIVER.GetScreenWidth() - width); nx = VIDEODRIVER.GetScreenWidth() - width; } if(ny > VIDEODRIVER.GetScreenHeight() - height) { NewMouseY -= ny - (VIDEODRIVER.GetScreenHeight() - height); ny = VIDEODRIVER.GetScreenHeight() - height; } // Fix mouse position if moved too far if(NewMouseX - mc.x || NewMouseY - mc.y) VIDEODRIVER.SetMousePos(NewMouseX, NewMouseY); x = (unsigned short)nx; y = (unsigned short)ny; last_x = mc.x; last_y = mc.y; } // beiden Buttons oben links und rechts prfen const Rect rec[2] = { GetLeftButtonRect(), GetRightButtonRect() }; for(unsigned char i = 0; i < 2; ++i) { if(Coll(mc.x, mc.y, rec[i])) { if(mc.ldown) button_state[i] = BUTTON_PRESSED; else button_state[i] = BUTTON_HOVER; } else button_state[i] = BUTTON_UP; } }