diff --git a/dropdown.cpp b/dropdown.cpp index b0f6442065a5760d00b2f385677374c2b859bb2c..740360a9485210a346da6a4cf0da1ab4ba1440c3 100644 --- a/dropdown.cpp +++ b/dropdown.cpp @@ -13,7 +13,7 @@ Dropdown::Dropdown(int x, int y, int extentx, int extenty, vector<string> option _extentx = extentx; _extenty = extenty; _mod = 1; - _number = 0; + _number = -1; _scroll = 0; } @@ -30,103 +30,103 @@ void Dropdown::image() void Dropdown::operate(event ev) { - gout << move_to(_x, _y) << color(128, 128, 128) << box(_extentx, _extenty) << move_to(_x, _y + _extenty * 0.8) << color(255, 255, 255) << text(_options[_number]); - gout << move_to(_x + _extentx - _extenty + 3, _y + 3) << color(255, 255, 255) << box(_extenty - 6, _extenty - 6); - if (ev.type == ev_key && ev.keycode == key_down) + bool run = true; + while (gin >> ev && run) { - if(_scroll != _options.size()-_limit+1) + // Drawing dropdown items + for (int i = 0; i < 4; ++i) { + int y_offset = _y + (i * (_extenty + 5)); + gout << move_to(_x, y_offset) << color(128, 128, 128) << box(_extentx, _extenty); + gout << move_to(_x, y_offset + _extenty * 0.8) << color(255, 255, 255) << text(_options[i]); + } + gout << refresh; + + // Event handling + if (ev.type == ev_mouse && ev.button == btn_left) { - _scroll +=1; + cout << "Mouse clicked at: " << ev.pos_x << " , " << ev.pos_y << endl; + for (int i = 0; i < 4; ++i) + { + int y_offset = _y + (i * (_extenty + 5)); + if (ev.pos_x >= _x && ev.pos_x <= _x + _extentx && + ev.pos_y >= y_offset && ev.pos_y <= y_offset + _extenty) + { + cout << "Option " << i << " clicked" << endl; // Debug print + _number = i; + run = false; // Set run to false to exit the loop + break; // Break the loop as we found the clicked option + } + } } - } - if (ev.type == ev_key && ev.keycode == key_up) - { - if(_scroll > 0) + if(_number != -1) { - _scroll -=1; + run = false; + break; + } } - int szam = _scroll; - for (int i = _y + _extenty + 2; i < _y + _limit * (_extenty + 2); i += _extenty + 2) + /* + bool run = true; + while (gin >> ev and run) { - gout << color(128, 128, 128); - if (ev.pos_x >= _x and ev.pos_x <= _x + _extentx) + // Drawing dropdown items + for (int i = 0; i < 4; ++i) { + int y_offset = _y + (i * (_extenty + 5)); + gout << move_to(_x, y_offset) << color(128, 128, 128) << box(_extentx, _extenty); + gout << move_to(_x, y_offset + _extenty * 0.8) << color(255, 255, 255) << text(_options[i]); + } + gout << refresh; + + // Event handling + if (ev.type == ev_mouse && ev.button == btn_left) { - if (ev.pos_y >= i and ev.pos_y <= i + _extenty) + cout << "Mouse clicked at: " << ev.pos_x << " , " << ev.pos_y << endl; + for (int i = 0; i < 4; ++i) { - gout << color(50, 50, 50); + int y_offset = _y + (i * (_extenty + 5)); + if (ev.pos_x >= _x && ev.pos_x <= _x + _extentx && + ev.pos_y >= y_offset && ev.pos_y <= y_offset + _extenty) + { + _number = i; + run = false; + break; + } } } - gout << move_to(_x, i) << box(_extentx, _extenty); - gout << move_to(_x + 5, i + _extenty * 0.7) << color(255, 255, 255) << text(_options[szam]); - szam += 1; } - gout << refresh; + */ } void Dropdown::reset(event ev) { gout << move_to(_x, _y) << color(0, 0, 0) << box((_extentx), (_extenty + 3) * 5); image(); + cout << _number << "igazsag asd" <<endl; if (_mod == 2) { int szam = _scroll; for (int i = _y + _extenty + 2; i < _y + _limit * (_extenty + 2); i += _extenty + 2) { - if (ev.pos_x >= _x and ev.pos_x <= _x + _extentx) + if(ev.type == ev_mouse && ev.button == btn_left) { - if (ev.pos_y >= i and ev.pos_y <= i + _extenty) + if (ev.pos_x >= _x and ev.pos_x <= _x + _extentx) { - _number = szam; - break; + if (ev.pos_y >= i and ev.pos_y <= i + _extenty) + { + _number = szam; + cout << _number << "igazsag" <<endl; + break; + } } } + szam += 1; } } - image(); } bool Dropdown::is_chosen(int mx, int my, event ev) { - switch (_mod) - { - case 1: - if (mx >= (_x + _extentx - _extenty) and mx <= (_x + _extentx - 3)) - { - if (my >= _y + 3 and my <= _y + _extenty - 3) - { - _mod = 2; - return true; - } - reset(ev); - return false; - } - reset(ev); - return false; - break; - case 2: - if (mx >= _x and mx <= _x + _extentx) - { - if (my >= _y + _extenty + 3 and my <= (_y + _extenty + 3) * 4) - { - reset(ev); - _mod = 1; - return false; - } - _mod = 1; - reset(ev); - return false; - } - _mod = 1; - reset(ev); - return false; - break; - default: - _mod = 1; - reset(ev); - return false; - break; - } + return false; } diff --git a/main.cpp b/main.cpp index 3ac7753693b6f790a7df408954d9d1ad54a3a212..8e1e46348bc7beeed70e0c5c80dd6822818d3536 100644 --- a/main.cpp +++ b/main.cpp @@ -23,8 +23,8 @@ public: void init_pieces() { // Fehér bábuk inicializálása + /* r1_1 = new Rook(this, 0, 0, true); - kn1_1 = new Knight(this, 80, 0, true); b1_1 = new Bishop(this, 160, 0, true); k1 = new King(this, 240, 0, true); @@ -32,6 +32,7 @@ public: b1_2 = new Bishop(this, 400, 0, true); kn1_2 = new Knight(this, 480, 0, true); r1_2 = new Rook(this, 560, 0, true); +*/ p1_1 = new Pawn(this, 0, 80, true); p1_2 = new Pawn(this, 80, 80, true); p1_3 = new Pawn(this, 160, 80, true); @@ -40,9 +41,10 @@ public: p1_6 = new Pawn(this, 400, 80, true); p1_7 = new Pawn(this, 480, 80, true); p1_8 = new Pawn(this, 560, 80, true); - + p1_8 = new Pawn(this, 560, 150, true); // Fekete bábuk inicializálása + /* r2_1 = new Rook(this, 0, 560, false); kn2_1 = new Knight(this, 80, 560, false); b2_1 = new Bishop(this, 160, 560, false); @@ -51,6 +53,7 @@ public: b2_2 = new Bishop(this, 400, 560, false); kn2_2 = new Knight(this, 480, 560, false); r2_2 = new Rook(this, 560, 560, false); +*/ p2_1 = new Pawn(this, 0, 480, false); p2_2 = new Pawn(this, 80, 480, false); p2_3 = new Pawn(this, 160, 480, false); diff --git a/pawn.cpp b/pawn.cpp index b251bc777024004aecbd6e0b718dec865f7b9f20..019c180a5b534754613100780f7264138e5bd59e 100644 --- a/pawn.cpp +++ b/pawn.cpp @@ -427,18 +427,22 @@ } } } - if ((_color && _y == 560) || (!_color && _y == 0)) { - cout << '1' << endl; - event ev1; - vector<string> options = {"Queen", "Rook", "Bishop", "Knight"}; // A választható opciók listája - Dropdown Dropdown(100,100,100,30, options,4); // Létrehozzuk a Dropdown objektumot - while (true) { // A ciklus addig fut, amíg valamilyen választás nem történik + //mukodik de nem elég simán fut + if ((_color && _y == 560) || (!_color && _y == 0)) + { + vector<string> options = {"Queen", "Rook", "Bishop", "Knight"}; + Dropdown Dropdown(100, 100, 100, 30, options, 5); + while (true) + { event ev_dropdown; gin >> ev_dropdown; - Dropdown.operate(ev_dropdown); // Kezeljük az eseményeket a dropdown menüben - + Dropdown.operate(ev_dropdown); + if(ev_dropdown.type == ev_mouse && ev_dropdown.button == btn_left) + { + break; + } } - cout << Dropdown.ret() << " szam " <<endl; + reset(run); switch (Dropdown.ret()) { case 0: @@ -468,7 +472,6 @@ default: break; } - } gout << refresh; }