예제 #1
0
파일: board.cpp 프로젝트: vince91/Chess3D
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);

}
예제 #2
0
파일: board.cpp 프로젝트: vince91/Chess3D
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;
}
예제 #3
0
파일: board.cpp 프로젝트: vince91/Chess3D
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;
}
예제 #4
0
	void Editable::onMouseReleased(const MouseEvent &e) {
		UIElement::onMouseReleased(e);
		if(_startSel) {
			moveCursorTo(getPosAt(e.getPos().x));
			clearSelection();
			repaint();
		}
		_startSel = false;
		_selecting = false;
	}
예제 #5
0
	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();
		}
	}