void FocusFrame::draw(sf::RenderWindow* render) { if(m_style == NULL) { log_err "No style has been applied to the component "+getComponentName() end_log_err; return; } if(!m_visible) { return; } util::CoordInt coord = getRealCoord(); BasicStyle::State state = BasicStyle::normal; int borderWidth = m_style->topleft(state)->getGlobalBounds().width; int borderHeight = m_style->topleft(state)->getGlobalBounds().height; m_style->topleft(state)->setPosition(coord.x, coord.y); render->draw(*m_style->topleft(state)); m_style->top(state)->setPosition(coord.x+borderWidth, coord.y); m_style->top(state)->setScale(m_width-borderWidth*2, 1.0); render->draw(*m_style->top(state)); m_style->topright(state)->setPosition(coord.x+m_width-borderWidth, coord.y); render->draw(*m_style->topright(state)); m_style->right(state)->setPosition(coord.x+m_width-borderWidth, coord.y+borderHeight); m_style->right(state)->setScale(1.0, m_height-borderHeight*2); render->draw(*m_style->right(state)); m_style->botright(state)->setPosition(coord.x+m_width-borderWidth, coord.y+m_height-borderHeight); render->draw(*m_style->botright(state)); m_style->bot(state)->setPosition(coord.x+borderWidth, coord.y+m_height-borderHeight); m_style->bot(state)->setScale(m_width-borderWidth*2, 1.0); render->draw(*m_style->bot(state)); m_style->botleft(state)->setPosition(coord.x, coord.y+m_height-borderHeight); render->draw(*m_style->botleft(state)); m_style->left(state)->setPosition(coord.x, coord.y+borderHeight); m_style->left(state)->setScale(1.0, m_height-borderHeight*2); render->draw(*m_style->left(state)); m_style->center(state)->setPosition(coord.x+borderWidth, coord.y+borderHeight); m_style->center(state)->setScale(m_width-borderWidth*2, m_height-borderHeight*2); render->draw(*m_style->center(state)); m_text.draw(render); }
bool MainWindow::updateProgress() { if ((input->coord.x < 0 || input->coord.x > input->n || input->coord.y < 0 || input->coord.y > input->n || input->coord.h < 0 || input->coord.h > input->h) && (input->allowWin)) { if (!finished) { win(); return false; } } else if (finished) restart(); gpoint c = getRealCoord(); if (progress[c.x][c.y][c.h]) return false; else { progress[c.x][c.y][c.h] = true; return true; } }
void MainWindow::startBot() { if (finished) input->messages->addMessage(tr("Game already finished")); else if (widget->botActive) input->messages->addMessage(tr("Bot already started")); widget->botLast = 0; input->messages->addMessage(tr("Bot started")); widget->botActive = true; stopBot = false; for (int i = 0; i < input->n; i++) for (int j = 0; j < input->n; j++) for (int k = 0; k < input->h; k++) w[i][j][k] = false; integerCoord = getRealCoord(); superDfs(); widget->botActive = false; stopBot = false; input->messages->addMessage(tr("Bot finished")); }
void CharacterFrame::draw(sf::RenderWindow* render) { util::CoordInt coord = getRealCoord(); if(m_select) m_selected = true; m_width -= 10; m_height -= 4; m_coord.x += 5; m_coord.y += 2; Button::draw(render); m_width += 10; m_height += 4; m_coord.x -= 5; m_coord.y -= 2; m_selected = false; sf::Text name; name.setString(m_player->getName()); name.setFont(*m_style->font()); name.setCharacterSize(18); name.setColor(sf::Color::White); sf::FloatRect textSize = name.getGlobalBounds(); name.setPosition(coord.x+13,coord.y+5); render->draw(name); sf::Text level; level.setString("level "+util::Cast::intToString(m_player->getLevel())); level.setFont(*m_style->font()); level.setCharacterSize(14); level.setColor(sf::Color::White); textSize = level.getGlobalBounds(); level.setPosition(coord.x+13,coord.y+30); render->draw(level); }
bool MainWindow::superDfs() { if (stopBot) return 1; widget->botLast += 100.0 / input->n / input->n / input->h / 2; integerCoord = getRealCoord(); w[integerCoord.x][integerCoord.y][integerCoord.h] = true; int sp[6]; for (int i = 0; i < 6; i++) sp[i] = i; for (int i = 1; i < 6; i++) swap(sp[i], sp[rand() % i]); for (int i = 0; i < 6; i++) { if (sp[i] == 0) if (!w[integerCoord.x - 1][integerCoord.y][integerCoord.h] && !isWallLeft(integerCoord)) { integerCoord.x -= 1; standartMove(genFPoint(integerCoord.x + 1.5, integerCoord.y + 0.5, integerCoord.h + 0.5), genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h + 0.5)); integerCoord.x += 1; } if (sp[i] == 1) if (!w[integerCoord.x][integerCoord.y + 1][integerCoord.h] && !isWallForward(integerCoord)) { integerCoord.y += 1; standartMove(genFPoint(integerCoord.x + 0.5, integerCoord.y - 0.5, integerCoord.h + 0.5), genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h + 0.5)); integerCoord.y -= 1; } if (sp[i] == 2) if (!w[integerCoord.x][integerCoord.y - 1][integerCoord.h] && !isWallBackward(integerCoord)) { integerCoord.y -= 1; standartMove(genFPoint(integerCoord.x + 0.5, integerCoord.y + 1.5, integerCoord.h + 0.5), genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h + 0.5)); integerCoord.y += 1; } if (sp[i] == 3) if (!w[integerCoord.x + 1][integerCoord.y][integerCoord.h] && !isWallRight(integerCoord)) { integerCoord.x += 1; standartMove(genFPoint(integerCoord.x - 0.5, integerCoord.y + 0.5, integerCoord.h + 0.5), genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h + 0.5)); integerCoord.x -= 1; } if (sp[i] == 4) if (!w[integerCoord.x][integerCoord.y][integerCoord.h + 1] && !isWallUp(integerCoord)) { integerCoord.h += 1; standartMove(genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h - 0.5), genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h + 0.5)); integerCoord.h -= 1; } if (sp[i] == 5) if (!w[integerCoord.x][integerCoord.y][integerCoord.h - 1] && !isWallDown(integerCoord)) { integerCoord.h -= 1; standartMove(genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h + 1.5), genFPoint(integerCoord.x + 0.5, integerCoord.y + 0.5, integerCoord.h + 0.5)); integerCoord.h += 1; } } return 0; }