VOID Player::turn(ProgramManager &rProgramManager, GameInfo &rGameInfo) { if(rGameInfo.first == first_) { if(rGameInfo.scoredEight) rProgramManager.endGame(name_ + L" выиграл со счЄтом: " + getScoreWStr()); else if(rGameInfo.scoredZero) { rGameInfo.scoredZero = FALSE; rGameInfo.drawCue = FALSE; rGameInfo.turn = Turns::SetZeroPos; rProgramManager.updateZero(); } else if(rGameInfo.scoredWrong) { rGameInfo.scoredWrong = FALSE; rGameInfo.drawCue = FALSE; rGameInfo.turn = Turns::SetPos; } if(!copied_) { memcpy(tmpBallsStatus_, rProgramManager.getScored(), sizeof(tmpBallsStatus_)); memcpy(tmpBallsPos_, rProgramManager.getPoints(), sizeof(tmpBallsPos_)); copied_ = !copied_; } if(rGameInfo.turn == Turns::SetZeroPos) { rProgramManager.setBallCoords(rProgramManager.getMousePos()); rProgramManager.work(textToDraw(), PointF(0, 0), static_cast<ARGB>(Color::LightGreen), FALSE); if(Key(VK_END)) { rGameInfo.turn = Turns::Blow; rGameInfo.drawCue = TRUE; } } else if(rGameInfo.turn == Turns::SetPos) { rProgramManager.setBallCoords(rProgramManager.getMousePos(), rGameInfo.wrongBall); rProgramManager.work(textToDraw(), PointF(0, 0), static_cast<ARGB>(Color::LightGreen), FALSE); if(Key(VK_END)) { rGameInfo.turn = Turns::Blow; rGameInfo.drawCue = TRUE; } } else if(rGameInfo.turn == Turns::Blow) { if(Key(VK_SPACE)) { POINT cursor = { 0, 0 }; GetCursorPos(&cursor); rProgramManager.nextMove(); rGameInfo.turn = Turns::Step; } else rProgramManager.work(textToDraw()); } else if(rGameInfo.turn == Turns::Step) { if(!rProgramManager.stopBalls()) rProgramManager.work(textToDraw()); else { updateScore(checkScored(rProgramManager, rGameInfo)); if(!checkPoints(rProgramManager)) if(score_ != 0) score_--; resetValues(); rGameInfo.resetToNext(); } } } else rProgramManager.work(textToDraw(), PointF(static_cast<REAL>(rProgramManager.getMemDCWindow().width - 6 * sizestenaRIGHT), 0), static_cast<ARGB>(Color::Red), rGameInfo.drawCue); }