IntRect HitTestLocation::rectForPoint(const LayoutPoint& point, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding) { IntPoint actualPoint(flooredIntPoint(point)); actualPoint -= IntSize(leftPadding, topPadding); IntSize actualPadding(leftPadding + rightPadding, topPadding + bottomPadding); // As IntRect is left inclusive and right exclusive (seeing IntRect::contains(x, y)), adding "1". // FIXME: Remove this once non-rect based hit-detection stops using IntRect:intersects. actualPadding += IntSize(1, 1); return IntRect(actualPoint, actualPadding); }
/* * Testing */ TEST(MathPoint, Sum_Equal_Operator_Equal) { int summer = 3; const int size = 5; int data1[size] = {0, 0, 0, 0, 0}; int data2[size] = {3, 3, 3, 3, 3}; Point<int> actualPoint(data1, size); Point<int> expectedPoint(data2, size); actualPoint += summer; EXPECT_EQ(expectedPoint, actualPoint); }
/* * Testing adding two pointers */ TEST(MathPoint, Add_Equal_Operator_Points_New_Point) { const int size = 5; int data1[size] = {3, 4, 5, 6, 7}; int data2[size] = {6, 8, 10, 12, 14}; Point<int> actualPoint(data1, size); Point<int> expectedPoint(data2, size); actualPoint += actualPoint; EXPECT_EQ(expectedPoint, actualPoint); }
/* * Testing */ TEST(MathPoint, Divider_Operator_Equal) { int divider = 3; const int size = 15; Point<int> expectedPoint(size); Point<int> actualPoint(size); for(int i = 0; i < size; i++){ actualPoint[i] = 9; } actualPoint = actualPoint / divider; for(int i = 0; i < size; i++){ expectedPoint[i] = divider; } EXPECT_EQ(expectedPoint, actualPoint); }
void Player::updatePosition(){ // 先更新地图位置,再更新角色的位置 float x = MAX(_mx,WINDOW_WIDTH/2); float y = MAX(_my,WINDOW_HEIGHT/2); x = MIN(x,Game->sMapWidth-WINDOW_WIDTH/2); y = MIN(y,Game->sMapHeight-WINDOW_HEIGHT/2); Point actualPoint(x,y); Point centerOfView(WINDOW_WIDTH/2,WINDOW_HEIGHT/2); Point viewpoint = centerOfView - actualPoint; // 设置 tmx 地图位置 Game->getGameMap()->getTMXMap()->setPosition(viewpoint); // 设置 player 位置 setPosition(viewpoint + Point(_mx,_my)); }