Select Git revision
application.cpp
application.cpp 3.29 KiB
#include "application.hpp"
#include "graphics.hpp"
#include "widget.hpp"
#include <iostream>
using namespace genv;
using namespace std;
Application::Application()
{
gout.open(910,910);
}
void ellenoriz(vector<Widget> v)
{
}
void Application::registerWidget(Widget* w)
{
widgets.push_back(w);
}
void Application::event_loop()
{
int wrongi = -1;
event ev;
int focus = -1;
while(gin >> ev )
{
if (ev.type == ev_mouse && ev.button==btn_left)
{
for (size_t i=0; i<widgets.size(); i++)
{
if (widgets[i]->isover(ev.pos_x, ev.pos_y))
{
focus = i;
}
}
}
wrongi = -1;
if (focus != -1) {
widgets[focus]->handle(ev);
for (int k = 0; k < 81; k += 9) {
for (int i = k; i < 9 + k; ++i) {
for (int j = i + 1; j < 9 + k; ++j) {
if (widgets[i]->getter() != 0 && widgets[i]->getter() == widgets[j]->getter()) {
wrongi = i;
break;
}
}
if (wrongi != -1) {
break;
}
}
if (wrongi != -1) {
break;
}
}
for (int k = 0; k < 9; ++k) {
for (int i = k; i < 81; i += 9) {
for (int j = i + 9; j < 81; j += 9) {
if (widgets[i]->getter() != 0 && widgets[i]->getter() == widgets[j]->getter()) {
wrongi = i;
break;
}
}
if (wrongi != -1) {
break;
}
}
if (wrongi != -1) {
break;
}
}
for (int row_offset = 0; row_offset < 9; row_offset += 3) {
for (int col_offset = 0; col_offset < 9; col_offset += 3) {
std::vector<bool> seen(10, false);
for (int i = row_offset; i < row_offset + 3; ++i) {
for (int j = col_offset; j < col_offset + 3; ++j) {
int num = widgets[i * 9 + j]->getter();
if (num != 0) {
if (seen[num]) {
wrongi = i * 9 + j;
break;
} else {
seen[num] = true;
}
}
}
if (wrongi != -1) {
break;
}
}
if (wrongi != -1) {
break;
}
}
if (wrongi != -1) {
break;
}
}
}
for (int i = 0; i < widgets.size(); ++i) {
if( i == wrongi){
widgets[i]->draw();
}
else {
widgets[i]->draw2();
}
}
gout << refresh;
}
}