//player to hard code point bool checkCollidePH(player P, float ox, float oy, float or) { Point p; p.x = ox; p.y = oy; return theCollide(P.getPosition(), p, P.getRadius(), or); }
//player to player bool checkCollidePP(player P1, player P2) { return (theCollide(P1.getPosition(), P2.getPosition(), P1.getRadius(), P2.getRadius())); }
void drawPlayer() { int x, y, r; //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //get players position x = (int)mainPlayer.getPosition().x; y = (int)mainPlayer.getPosition().y; r = (int)mainPlayer.getRadius(); //start drawing the player glPushMatrix(); glEnable(GL_TEXTURE_2D); glMatrixMode(GL_MODELVIEW); //for rotation if (wasclicked_RB == true || follow == true) { float PI = (float)3.14159265; float dy, dx; if (follow == true) { dy = (enemy[chase].getPosition().y - y); dx = (enemy[chase].getPosition().x - x); } else { dy = (mouse.y - y); dx = (mouse.x - x); } //find angle of rotation, if dx is 0 then you cant divide by 0 so set angle to 180 if (dx == 0) {} else angle = atan(dy / dx) * 180/PI + 90; //if dx is negative then we have to compensate the angle to go left if (dx < 0) angle += 180; } //draw the player texture glBindTexture(GL_TEXTURE_2D, mainPlayer.getSprites()[player_animation_select]); //translate the player to the origin glTranslatef((GLfloat)x,(GLfloat)y, (GLfloat)0.0f); //rotate player glRotatef(angle,0,0,1); //draw player glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex2f((GLfloat)(-r), (GLfloat)(r)); glTexCoord2f(1, 0); glVertex2f((GLfloat)(r), (GLfloat)(r)); glTexCoord2f(1, 1); glVertex2f((GLfloat)(r), (GLfloat)(-r)); glTexCoord2f(0, 1); glVertex2f((GLfloat)(-r), (GLfloat)(-r)); glEnd(); glDisable(GL_TEXTURE_2D); //reset the screen so only player rotated glPopMatrix(); //flush the buffer glFlush(); }
//player to unit bool checkCollidePU(player P, unit U) { return (theCollide(P.getPosition(), U.getPosition(), P.getRadius(), U.getRadius())); }
void playerMovement () { //rotate player //needs to be added in, will come soon //move in direction of int col_flag; Point P1, P2; if (_move == true) { //move until player hits mouse click P1 = mainPlayer.getPosition(); mainPlayer.move(mouse.x, mouse.y); P2 = mainPlayer.getPosition(); if (checkCollisions() == true) { //left if ((mainPlayer.getPosition().x - mainPlayer.getRadius()) <= enemy[collide_with].getPosition().x + enemy[collide_with].getRadius() && (mainPlayer.getPosition().x - mainPlayer.getRadius()) + mainPlayer.getSpeed() + 1> enemy[collide_with].getPosition().x + enemy[collide_with].getRadius()) col_flag = 1; //right else if ((mainPlayer.getPosition().x + mainPlayer.getRadius()) >= enemy[collide_with].getPosition().x - enemy[collide_with].getRadius() && (mainPlayer.getPosition().x + mainPlayer.getRadius()) - mainPlayer.getSpeed() - 1< enemy[collide_with].getPosition().x - enemy[collide_with].getRadius()) col_flag = 2; //none else col_flag = 3; //top if ((mainPlayer.getPosition().y - mainPlayer.getRadius()) <= enemy[collide_with].getPosition().y + enemy[collide_with].getRadius() && (mainPlayer.getPosition().y - mainPlayer.getRadius()) + mainPlayer.getSpeed() + 1 > enemy[collide_with].getPosition().y + enemy[collide_with].getRadius()) col_flag += 10; //bottom else if ((mainPlayer.getPosition().y + mainPlayer.getRadius()) >= enemy[collide_with].getPosition().y - enemy[collide_with].getRadius() && (mainPlayer.getPosition().y + mainPlayer.getRadius()) - mainPlayer.getSpeed() - 1 < enemy[collide_with].getPosition().y - enemy[collide_with].getRadius()) col_flag += 20; //none else col_flag += 30; mainPlayer.setPosition(P1.x, P1.y); switch (col_flag) { //left top case 11: P1.x = enemy[collide_with].getPosition().x + enemy[collide_with].getRadius() + mainPlayer.getRadius(); P1.y = enemy[collide_with].getPosition().y + enemy[collide_with].getRadius() + mainPlayer.getRadius(); mainPlayer.move(P1.x,P1.y); break; //left bottom case 21: P1.x = enemy[collide_with].getPosition().x + enemy[collide_with].getRadius() + mainPlayer.getRadius(); P1.y = enemy[collide_with].getPosition().y - enemy[collide_with].getRadius() - mainPlayer.getRadius(); mainPlayer.move(P1.x,P1.y); break; //left none case 31: P1.x = enemy[collide_with].getPosition().x + enemy[collide_with].getRadius() + mainPlayer.getRadius(); P1.y = mouse.y; mainPlayer.move(P1.x,P1.y); break; //right top case 12: P1.x = enemy[collide_with].getPosition().x - enemy[collide_with].getRadius() - mainPlayer.getRadius(); P1.y = enemy[collide_with].getPosition().y + enemy[collide_with].getRadius() + mainPlayer.getRadius(); mainPlayer.move(P1.x,P1.y); break; //right bottom case 22: P1.x = enemy[collide_with].getPosition().x - enemy[collide_with].getRadius() - mainPlayer.getRadius(); P1.y = enemy[collide_with].getPosition().y - enemy[collide_with].getRadius() - mainPlayer.getRadius(); mainPlayer.move(P1.x,P1.y); break; //right none case 32: P1.x = enemy[collide_with].getPosition().x - enemy[collide_with].getRadius() - mainPlayer.getRadius(); P1.y = mouse.y; mainPlayer.move(P1.x,P1.y); break; //none top case 13: P1.x = mouse.x; P1.y = enemy[collide_with].getPosition().y + enemy[collide_with].getRadius() + mainPlayer.getRadius(); mainPlayer.move(P1.x,P1.y); break; //none bottom case 23: P1.x = mouse.x; P1.y = enemy[collide_with].getPosition().y - enemy[collide_with].getRadius() - mainPlayer.getRadius(); mainPlayer.move(P1.x,P1.y); break; //none none case 33: mainPlayer.move(mouse.x,mouse.y); break; default: mainPlayer.move(mouse.x,mouse.y); break; } } if (mainPlayer.getPosition().x == mouse.x && mainPlayer.getPosition().y == mouse.y) _move = false; Sleep(10); } }