void Board::movePieceTo(int vao, int i, int j){ Piece * piece = vaoIDsMap[vao]; if (piece == nullptr) throw std::string("La piece demandée n'existe pas"); if(piece->getName() == "Knight"){ scene->jumpVAOTo(vao -1, getPosAt(i,j)); }else{ scene->slideVAOTo(vao - 1,getPosAt(i,j)); } //ejectPieceAt(i,j); piece->moveTo(i,j); }
std::vector<std::vector<Piece *> > Board::initClassic(Scene * _scene) { scene=_scene; computeAllSquares(); std::vector<std::vector<Piece *> > pieces; pieces.push_back(initPiece(1)); pieces.push_back(initPiece(2)); std::vector<std::string> model; std::vector<int> team ; std::vector<glm::vec3> pos ; for (int i = 0; i<2; i++){ for (int j = 0; j<16; j++){ model.push_back(pieces[i][j]->getModelPath()); team.push_back(i+1); pos.push_back(getPosAt(pieces[i][j]->getPosition())); } } std::vector<int> vaoIDs = scene->addVaoPieces(model,team,pos); for (int i = 0; i<2; i++){ for (int j = 0; j<16; j++){ int indice = (i*16) + j ; pieces[i][j]->setVaoID(vaoIDs[indice]); vaoIDsMap[vaoIDs[indice]] = pieces[i][j]; } } return pieces; }
std::vector<std::vector<Piece *> > Board::initWithFile(Scene * _scene, std::string filename) { scene=_scene; std::vector<std::vector<Piece *> > pieces; pieces.resize(2); pieces[0] = initPieceFromFile(1); pieces[1] = initPieceFromFile(2); std::vector<std::string> model; std::vector<int> team ; std::vector<glm::vec3> pos ; for (int i = 0; i<2; i++){ for (int j = 0; j<pieces[i].size(); j++){ model.push_back(pieces[i][j]->getModelPath()); team.push_back(i+1); pos.push_back(getPosAt(pieces[i][j]->getPosition())); } } std::vector<int> vaoIDs = scene->addVaoPieces(model, team, pos); for (int i = 0; i<2; i++){ for (int j = 0; j<pieces[i].size(); j++){ int indice = (i*16) + j ; pieces[i][j]->setVaoID(vaoIDs[indice]); vaoIDsMap[vaoIDs[indice]] = pieces[i][j]; } } return pieces; }
void Editable::onMouseReleased(const MouseEvent &e) { UIElement::onMouseReleased(e); if(_startSel) { moveCursorTo(getPosAt(e.getPos().x)); clearSelection(); repaint(); } _startSel = false; _selecting = false; }
void Editable::onMouseMoved(const MouseEvent &e) { UIElement::onMouseMoved(e); if(_selecting) { int pos = getPosAt(e.getPos().x); uchar dir = pos > (int)_cursor ? DIR_RIGHT : DIR_LEFT; changeSelection(pos,pos,dir); moveCursorTo(pos); repaint(); } }