void Player::testSkill() { if ( WM->isFastestOur() ) { GL_PRINT("test","fastest"); putActionInQueue( SKILL->dribble(WM->getOppGoalLeft()));//WM->getOppGoalRight(),max_kick_force,25) ); } else { GL_PRINT("test","runStrategicPos"); putActionInQueue( SKILL->runStrategicPos() ); } }
void Player::defaultPlayOn() { if ( WM->isFastestOur() ) { GL_PRINT("test","fastest"); putActionInQueue( SKILL->kickBetween(WM->getOppGoalLeft(),WM->getOppGoalRight(),max_kick_force,25) ); } else { GL_PRINT("test","runStrategicPos"); putActionInQueue( SKILL->runStrategicPos() ); } }
void BasicPlayer::playMatch() { #ifdef JOYSTICK if ( FM->getMyType() == PT_JOYSTICK ) { joystickPlay(); } else { #endif #ifdef TRAINING_MODE playTraining(); #else GL_PRINT("PlayMode","PM:%d",WM->getPlayMode() ); switch ( WM->getPlayMode() ) { case PM_BeforeKickOff : playBeforeKickOff(); break; case PM_KickOff_Left : case PM_KickOff_Right : playKickOff(); break; case PM_PlayOn : playPlayOn(); break; case PM_KickIn_Left : case PM_KickIn_Right : playKickIn(); break; case PM_CORNER_KICK_LEFT: case PM_CORNER_KICK_RIGHT: playCornerKick(); break; case PM_GOAL_KICK_LEFT: case PM_GOAL_KICK_RIGHT: playGoalKick(); break; case PM_OFFSIDE_LEFT: case PM_OFFSIDE_RIGHT: playOffsideKick(); break; default: playPlayOn(); break; } #endif /* TRAINING_MODE */ #ifdef JOYSTICK } #endif /* JOYSTICK */ }
void Player::goaliePlayOn() { Rectangle dangerArea(WM->getOurBaseLine(),half_penalty_width,WM->getOurBaseLine()+6.0f,-half_penalty_width); if ( WM->isFastestOur()&&dangerArea[WM->getBallGlobalPos()] ) { //if() GL_PRINT("goalie","fastest"); putActionInQueue(SKILL->goalieClearBall(1)); //putActionInQueue( SKILL->defendGoal() ); //GL_PRINT("test","defendGoal"); } else { GL_PRINT("goalie","runStrategicPos"); putActionInQueue( SKILL->defendGoal() ); //putActionInQueue(SKILL->clearBall()); } }
/// // Cree un shader object, charge le code source du shader et le compile // static GLuint LoadShader(GLenum type, const char *sourceFile) { // Preload le fichier de shader char *shaderSrc = FileToString(sourceFile); if (shaderSrc == NULL) { return false; } // Cree le shader object GLuint shader = glCreateShader(type); if (shader == 0) { return 0; } // Load the shader source glShaderSource(shader, 1, (const char **)&shaderSrc, NULL); // Compile le shader glCompileShader(shader); // on n'a plus besoin du fichier texte free(shaderSrc); // verifie le status de la compilation GLint compiled; glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled); if (!compiled) { GLint infoLen = 0; glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen); if (infoLen > 1) { char* infoLog = (char *)malloc(sizeof(char) * infoLen); glGetShaderInfoLog(shader, infoLen, NULL, infoLog); GL_PRINT("Error compiling shader:\n%s\n", infoLog); free(infoLog); } // on supprime le shader object car il est inutilisable glDeleteShader(shader); return 0; } return shader; }
void Player::defenderPlayOn() { Rectangle dangerArea(-20.0f,10.0f,-3.0f,-10.0f); Num teammateNum=4; if(WM->getInterceptBallPos().y()>0) teammateNum=5; if ( WM->isFastestOur()) { if(dangerArea[WM->getInterceptBallPos()]||dangerArea[WM->getBallGlobalPos()]) { if(WM->getMyFreedom()>5) { putActionInQueue(SKILL->pass(teammateNum)); } else { GL_PRINT("test","clearBall"); putActionInQueue(SKILL->clearBall(teammateNum)); } } else { Rectangle shootArea(8.0f,9.5f,25.0f,-9.5f); if(shootArea[WM->getInterceptBallPos()]||shootArea[WM->getBallGlobalPos()]) { GL_PRINT("test","shoot"); if(WM->getMyGlobalPos().y()<-2) { putActionInQueue(SKILL->kickTo(WM->getOppGoalRight(),100,0,20)); } else if(WM->getMyGlobalPos().y()<2) { putActionInQueue(SKILL->kickTo(WM->getOppGoalCenter(),100,0,20)); } else { putActionInQueue(SKILL->kickTo(WM->getOppGoalLeft(),100,0,20)); } } else if(WM->getMyFreedom()>-0) { putActionInQueue(SKILL->dribble(Vector3f(20,0,0))); } else { /*if(WM->getTeammateGlobalPos(teammateNum).x()>10) { putActionInQueue(SKILL->directPass(teammateNum)); } else { putActionInQueue(SKILL->pass(teammateNum)); }*/ putActionInQueue(SKILL->pass(teammateNum)); } } } else { GL_PRINT("test","runStrategicPos"); /*if(WM->getMyNum()==2) putActionInQueue(SKILL->dashTo((WM->getBallGlobalPos()+WM->getOurGoalCenter())/2)); else*/ putActionInQueue(SKILL->runStrategicPos()); } }
void Player::attackerPlayOn() { //defaultPlayOn(); int teammateNum=4; if(WM->getMyNum()==4) {teammateNum=5;} Rectangle shootArea(8.0f,9.5f,25.0f,-9.5f); Rectangle sideArea1(13.0f,15.0f,25.0f,9.5f); Rectangle sideArea2(13.0f,-9.5f,25.0f,-15.0f); if(WM->isFastestOur()) if(shootArea[WM->getInterceptBallPos()]||shootArea[WM->getBallGlobalPos()]) { GL_PRINT("test","shoot"); if(WM->getMyGlobalPos().y()<0) { putActionInQueue(SKILL->kickTo(WM->getOppGoalRight(),100,0,15)); } else { putActionInQueue(SKILL->kickTo(WM->getOppGoalLeft(),100,0,15)); } } else if(WM->getMyFreedom()>2.5f) { if(sideArea1[WM->getInterceptBallPos()]||sideArea2[WM->getInterceptBallPos()]) { if(WM->getBallGlobalPos().x()<(WM->getOppBaseLine()-3)) { putActionInQueue(SKILL->kickBetween(WM->getOppGoalLeft(),WM->getOppGoalRight(),100,20)); } else { putActionInQueue(SKILL->kickTo((WM->getOppGoalCenter()-Vector3f(4,0,0)),60,30,10)); } } else { //putActionInQueue(SKILL->pass(teammateNum)); putActionInQueue(SKILL->dribble(Vector3f(20,0,0))); } } else if(WM->getMyFreedom()>-5) { /*if(WM->getTeammateGlobalPos(teammateNum).x()>10) { putActionInQueue(SKILL->directPass(teammateNum)); } else { putActionInQueue(SKILL->pass(teammateNum)); }*/ putActionInQueue(SKILL->pass(teammateNum)); //putActionInQueue(SKILL->dribble(Vector3f(20,0,0))); } else { putActionInQueue(SKILL->clearBall(teammateNum)); } else { GL_PRINT("test","runStrategicPos"); putActionInQueue(SKILL->runStrategicPos()); } //testSkill(); }
// // Initialise les shader & program object // bool EsgiShader::Create() { // Cree le program object m_ProgramObject = glCreateProgram(); if (m_ProgramObject == 0) { return false; } if (m_VertexShader) { glAttachShader(m_ProgramObject, m_VertexShader); } if (m_FragmentShader) { glAttachShader(m_ProgramObject, m_FragmentShader); } #ifdef GL_GEOMETRY_SHADER if (m_GeometryShader) { glAttachShader(m_ProgramObject, m_GeometryShader); } #endif // callback permettant d'effectuer des operations avant le linkage if (m_PreLinkCallback) { m_PreLinkCallback(); } // Liage des shaders dans le programme glLinkProgram(m_ProgramObject); GLint linked = 0; GLint infoLen = 0; // verification du statut du linkage glGetProgramiv(m_ProgramObject, GL_LINK_STATUS, &linked); if (!linked) { glGetProgramiv(m_ProgramObject, GL_INFO_LOG_LENGTH, &infoLen); if (infoLen > 1) { char* infoLog = (char *)malloc(sizeof(char) * infoLen); glGetProgramInfoLog(m_ProgramObject, infoLen, NULL, infoLog); GL_PRINT("Erreur de lien du programme:\n%s\n", infoLog); free(infoLog); } glDeleteProgram(m_ProgramObject); return false; } #if defined(_DEBUG) || defined(DEBUG) // ne pas utiliser glValidateProgram() au runtime. // techniquement il faudrait appeler glValidateProgram() dans le contexte // d'utilisation du shader et non a sa creation pour verifier que toutes les // conditions d'execution sont bien remplies glValidateProgram(m_ProgramObject); glGetProgramiv(m_ProgramObject, GL_INFO_LOG_LENGTH, &infoLen); if (infoLen > 1) { char* infoLog = (char *)malloc(sizeof(char) * infoLen); glGetProgramInfoLog(m_ProgramObject, infoLen, NULL, infoLog); GL_PRINT("Resultat de la validation du programme:\n%s\n", infoLog); free(infoLog); } #endif return true; }