void mouseButton(int button, int state, int x, int y) { // only start motion if the left button is pressed if (button == GLUT_LEFT_BUTTON) { // when the button is released if (state == GLUT_UP) { switch (stage) { case MAIN: if ((432 <= x <= 572 && 320 <= y <= 380) || (432 <= Xmouse <= 572 && 220 <= Ymouse <= 280)) { Xmouse = x; Ymouse = y; } else if (450<=x<=675)//if choosing type of building by mouse { if (400<=y<=450) KindOf = garage; else if (450 <= y <= 500) KindOf = house; } else if (675 <= x <= 900) { if (400 <= y <= 450) KindOf = storage; else if (450 <= y <= 500) KindOf = office; } if (KindOf == house || KindOf == office) { if (125 <= y <= 175) { if (482 <= x <= 532) Building::numFloors = 1; if (552 <= x <= 602) Building::numFloors = 2; if (622 <= x <= 672) Building::numFloors = 3; if (KindOf == office) { if (692 <= x <= 742) Building::numFloors = 4; if (762 <= x <= 812) Building::numFloors = 5; } } } if (20 <= y <= 80) { if (570 <= x <= 690) exit(0); if (740 <= x <= 860) { if (KindOf == house) { delete &CalcObject; House CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00, Building::numFloors); } if (KindOf == office) { delete &CalcObject; Office CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00, Building::numFloors); } if (KindOf == garage) { delete &CalcObject; Garage CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00); } if (KindOf == storage) { delete &CalcObject; Storage CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00); } stage = FOUND; } } ProgMenu();//mozhet ne nuzhno break; case FOUND: if (0 <= x <= 450) { if (100 <= y <= 200) { CalcObject.foundType = concrete40; lightPlace = 5; } if (200 < y <= 300) { CalcObject.foundType = stone40; lightPlace = 3; } if (300 < y <= 400) { CalcObject.foundType = block40; lightPlace = 1; } } else if (450 < x < 900) { if (100 <= y <= 200) { CalcObject.foundType = concrete50; lightPlace = 6; } if (200 < y <= 300) { CalcObject.foundType = stone50; lightPlace = 4; } if (300 < y <= 400) { CalcObject.foundType = block50; lightPlace = 2; } } if (20 <= y <= 80) { CalcObject.FoudCalc(CalcObject.foundType,1.0); if (570 <= x <= 690) { stage = MAIN; lightPlace = 0; } if (740 <= x <= 860) { stage = WALLS; lightPlace = 0; } } break; case WALLS: if (0 <= x <= 450) { if (100 <= y <= 200) { CalcObject.wallType = aeratedBlock40; lightPlace = 5; } if (200 < y <= 300) { CalcObject.wallType = whiteBrick38; lightPlace = 3; } if (300 < y <= 400) { CalcObject.wallType = redBrick38; lightPlace = 1; } } else if (450 < x < 900) { if (100 <= y <= 200)//vvod ploshadi proyemov { Xmouse = x; Ymouse = y; } if (200 < y <= 300) { CalcObject.wallType = whiteBrick51; lightPlace = 4; } if (300 < y <= 400) { CalcObject.wallType = redBrick51; lightPlace = 2; } } if (20 <= y <= 80) { CalcObject.WallCalc(CalcObject.wallType); if (570 <= x <= 690) { stage = FOUND; lightPlace = 0; } if (740 <= x <= 860) { stage = OVERLAPS; lightPlace = 0; } } break; case OVERLAPS: if (0 <= x <= 450) { if (100 <= y <= 200) { CalcObject.overlapType = panel; lightPlace = 5; } if (200 < y <= 300) { CalcObject.overlapType = monolith; lightPlace = 3; } if (300 < y <= 400) { CalcObject.overlapType = wood; lightPlace = 1; } } if (20 <= y <= 80) { CalcObject.OverlapCalc(CalcObject.overlapType); if (570 <= x <= 690) { stage = WALLS; lightPlace = 0; } if (740 <= x <= 860) { stage = ROOFS; lightPlace = 0; } } break; case ROOFS: if (KindOf == house || KindOf == office) { if (0 <= x <= 450) { if (100 <= y <= 200) { CalcObject.roofType = hipBitTile; lightPlace = 5; } if (200 < y <= 300) { CalcObject.roofType = hipTile; lightPlace = 3; } if (300 < y <= 400) { CalcObject.roofType = flat; lightPlace = 1; } } else if (450 < x < 900) { if (200 < y <= 300) { CalcObject.roofType = hipMetTile; lightPlace = 4; } if (300 < y <= 400) { CalcObject.roofType = hipSlate; lightPlace = 2; } } } if (20 <= y <= 80) { CalcObject.RoofCalc(CalcObject.roofType); if (570 <= x <= 690) { stage = OVERLAPS; lightPlace = 0; } if (740 <= x <= 860) { lightPlace = 0; CalcObject.print(); } } break; } } } }