int PPVertualKey::calcDir(int div,PPRect area)
{
	PPRect a=vKeyArea;
	vKeyArea=area;
	int r=calcDir(div);
	vKeyArea=a;
	return r;
}
Esempio n. 2
0
//数组里面是tilePos
void ShowPlayerJump::play(const vector<CCPoint>& vecPath)
{
	if (vecPath.size() == 0)
		return;

	// find tile path
	NDTileMap* tilemap = NDTileMap::findMe();
	if (!tilemap)
		return;

	// find tile player
	NDTilePlayer* tilePlayer = tilemap->getTilePlayer();
	if (!tilePlayer)
		return;

	// reset fglayer zorder
	this->FgLayerZOrder_reset();

	// get player dir & pos
	PLAYER_DIR playerDir = tilePlayer->getDir();
	CCPoint playerPos = tilePlayer->getTilePos();

	// push commands with path nodes
	for (int i = 0; i < vecPath.size(); i++)
	{
		const CCPoint& kDestPosition = vecPath[i];
		PLAYER_DIR eNewDir = calcDir(playerPos, kDestPosition);

		float playTurnDuration = GStr.getFloat("player_turn_duration", 0.5f);
		float playJumpDuration = GStr.getFloat("player_jump_duration", 0.5f);

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
		playTurnDuration = TMax<float>(playTurnDuration, 0.3f);
		playJumpDuration = TMax<float>(playJumpDuration, 0.3f);
#endif

		// turn
		if (playerDir != eNewDir)
		{
			if (eNewDir == E_DIR_LEFT)
				turnLeft(playTurnDuration, tilePlayer);
			else if (eNewDir == E_DIR_RIGHT)
				turnRight(playTurnDuration, tilePlayer);
			else if (eNewDir == E_DIR_UP)
				turnUp(playTurnDuration, tilePlayer);
			else if (eNewDir == E_DIR_DOWN)
				turnDown(playTurnDuration, tilePlayer);
		}

		// jump
		playSound();
		jump(playJumpDuration, tilePlayer, kDestPosition, eNewDir);

		// idle
		idle(0.05);

		// update player pos & dir
		playerPos = kDestPosition;
		playerDir = eNewDir;
	}

	// save last tile pos for notify
	lastTilePos = vecPath.back();
}
Esempio n. 3
0
void CTank::pause()
{
	intMove();				//	思考がらみの移動処理
	calcDir();
}