int PPVertualKey::calcDir(int div,PPRect area) { PPRect a=vKeyArea; vKeyArea=area; int r=calcDir(div); vKeyArea=a; return r; }
//数组里面是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(); }
void CTank::pause() { intMove(); // 思考がらみの移動処理 calcDir(); }