本文整理汇总了C++中SpaceStation::GetFreeDockingPort方法的典型用法代码示例。如果您正苦于以下问题:C++ SpaceStation::GetFreeDockingPort方法的具体用法?C++ SpaceStation::GetFreeDockingPort怎么用?C++ SpaceStation::GetFreeDockingPort使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SpaceStation
的用法示例。
在下文中一共展示了SpaceStation::GetFreeDockingPort方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: l_space_spawn_ship_docked
/*
* Function: SpawnShipDocked
*
* Create a ship and place it inside the given <SpaceStation>.
*
* > ship = Space.SpawnShipDocked(type, station)
*
* Parameters:
*
* type - the name of the ship
*
* station - the <SpaceStation> to place the ship inside
*
* Return:
*
* ship - a <Ship> object for the new ship, or nil if there was no space
* inside the station
*
* Availability:
*
* alpha 10
*
* Status:
*
* stable
*/
static int l_space_spawn_ship_docked(lua_State *l)
{
if (!Pi::game)
luaL_error(l, "Game is not started");
LUA_DEBUG_START(l);
const char *type = luaL_checkstring(l, 1);
if (! ShipType::Get(type))
luaL_error(l, "Unknown ship type '%s'", type);
SpaceStation *station = LuaSpaceStation::CheckFromLua(2);
int port = station->GetFreeDockingPort();
if (port < 0)
return 0;
Ship *ship = new Ship(type);
assert(ship);
ship->SetFrame(station->GetFrame());
Pi::game->GetSpace()->AddBody(ship);
ship->SetDockedWith(station, port);
LuaShip::PushToLua(ship);
LUA_DEBUG_END(l, 1);
return 1;
}
示例2: HandleEvents
//.........这里部分代码省略.........
case SDLK_i: // Toggle Debug info
Pi::showDebugInfo = !Pi::showDebugInfo;
break;
#ifdef PIONEER_PROFILER
case SDLK_p: // alert it that we want to profile
if (KeyState(SDLK_LSHIFT) || KeyState(SDLK_RSHIFT))
Pi::doProfileOne = true;
else {
Pi::doProfileSlow = !Pi::doProfileSlow;
Output("slow frame profiling %s\n", Pi::doProfileSlow ? "enabled" : "disabled");
}
break;
#endif
case SDLK_F12:
{
if(Pi::game) {
vector3d dir = -Pi::player->GetOrient().VectorZ();
/* add test object */
if (KeyState(SDLK_RSHIFT)) {
Missile *missile =
new Missile(ShipType::MISSILE_GUIDED, Pi::player);
missile->SetOrient(Pi::player->GetOrient());
missile->SetFrame(Pi::player->GetFrame());
missile->SetPosition(Pi::player->GetPosition()+50.0*dir);
missile->SetVelocity(Pi::player->GetVelocity());
game->GetSpace()->AddBody(missile);
missile->AIKamikaze(Pi::player->GetCombatTarget());
} else if (KeyState(SDLK_LSHIFT)) {
SpaceStation *s = static_cast<SpaceStation*>(Pi::player->GetNavTarget());
if (s) {
Ship *ship = new Ship(ShipType::POLICE);
int port = s->GetFreeDockingPort(ship);
if (port != -1) {
Output("Putting ship into station\n");
// Make police ship intent on killing the player
ship->AIKill(Pi::player);
ship->SetFrame(Pi::player->GetFrame());
ship->SetDockedWith(s, port);
game->GetSpace()->AddBody(ship);
} else {
delete ship;
Output("No docking ports free dude\n");
}
} else {
Output("Select a space station...\n");
}
} else {
Ship *ship = new Ship(ShipType::POLICE);
if( KeyState(SDLK_LCTRL) )
ship->AIFlyTo(Pi::player); // a less lethal option
else
ship->AIKill(Pi::player); // a really lethal option!
lua_State *l = Lua::manager->GetLuaState();
pi_lua_import(l, "Equipment");
LuaTable equip(l, -1);
LuaObject<Ship>::CallMethod<>(ship, "AddEquip", equip.Sub("laser").Sub("pulsecannon_dual_1mw"));
LuaObject<Ship>::CallMethod<>(ship, "AddEquip", equip.Sub("misc").Sub("laser_cooling_booster"));
LuaObject<Ship>::CallMethod<>(ship, "AddEquip", equip.Sub("misc").Sub("atmospheric_shielding"));
lua_pop(l, 5);
ship->SetFrame(Pi::player->GetFrame());
ship->SetPosition(Pi::player->GetPosition()+100.0*dir);
ship->SetVelocity(Pi::player->GetVelocity());
ship->UpdateEquipStats();
game->GetSpace()->AddBody(ship);
示例3: HandleEvents
void Pi::HandleEvents()
{
SDL_Event event;
Pi::mouseMotion[0] = Pi::mouseMotion[1] = 0;
while (SDL_PollEvent(&event)) {
Gui::HandleSDLEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
if (event.key.keysym.sym == SDLK_ESCAPE) {
// only accessible once game started
if (currentView != 0) {
if (currentView != gameMenuView) {
RequestTimeAccel(0);
SetTimeAccel(0);
SetView(gameMenuView);
}
else
RequestTimeAccel(1);
}
break;
}
// special keys. LCTRL+turd
if ((KeyState(SDLK_LCTRL) || (KeyState(SDLK_RCTRL)))) {
if (event.key.keysym.sym == SDLK_q) Pi::Quit();
if (event.key.keysym.sym == SDLK_s) {
Render::ToggleShaders();
}
if (event.key.keysym.sym == SDLK_h) {
Render::ToggleHDR();
}
if (event.key.keysym.sym == SDLK_i) Pi::showDebugInfo = !Pi::showDebugInfo;
if (event.key.keysym.sym == SDLK_p) {
Sint64 crime, fine;
Polit::GetCrime(&crime, &fine);
printf("Criminal record: %llx, $%lld\n", crime, fine);
Polit::AddCrime(0x1, 100);
Polit::GetCrime(&crime, &fine);
printf("Criminal record now: %llx, $%lld\n", crime, fine);
}
if (event.key.keysym.sym == SDLK_PRINT) {
char buf[256];
const time_t t = time(0);
struct tm *_tm = localtime(&t);
strftime(buf, sizeof(buf), "screenshot-%Y%m%d-%H%M%S.tga", _tm);
Screendump(buf);
fprintf(stderr, "Screendump to %s\n", buf);
}
#ifdef DEBUG
if (event.key.keysym.sym == SDLK_m) {
Pi::player->SetMoney(Pi::player->GetMoney() + 10000000);
}
if (event.key.keysym.sym == SDLK_F12) {
matrix4x4d m; Pi::player->GetRotMatrix(m);
vector3d dir = m*vector3d(0,0,-1);
/* add test object */
if (KeyState(SDLK_RSHIFT)) {
Missile *missile = new Missile(ShipType::MISSILE_GUIDED, Pi::player, Pi::player->GetCombatTarget());
missile->SetRotMatrix(m);
missile->SetFrame(Pi::player->GetFrame());
missile->SetPosition(Pi::player->GetPosition()+50.0*dir);
missile->SetVelocity(Pi::player->GetVelocity());
Space::AddBody(missile);
} else if (KeyState(SDLK_LSHIFT)) {
SpaceStation *s = static_cast<SpaceStation*>(Pi::player->GetNavTarget());
if (s) {
int port = s->GetFreeDockingPort();
if (port != -1) {
printf("Putting ship into station\n");
// Make police ship intent on killing the player
Ship *ship = new Ship(ShipType::LADYBIRD);
ship->AIKill(Pi::player);
ship->SetFrame(Pi::player->GetFrame());
ship->SetDockedWith(s, port);
Space::AddBody(ship);
} else {
printf("No docking ports free dude\n");
}
} else {
printf("Select a space station...\n");
}
} else {
Ship *ship = new Ship(ShipType::LADYBIRD);
ship->m_equipment.Set(Equip::SLOT_LASER, 0, Equip::PULSECANNON_1MW);
ship->AIKill(Pi::player);
ship->SetFrame(Pi::player->GetFrame());
ship->SetPosition(Pi::player->GetPosition()+100.0*dir);
ship->SetVelocity(Pi::player->GetVelocity());
ship->m_equipment.Add(Equip::DRIVE_CLASS2);
ship->m_equipment.Add(Equip::RADAR_MAPPER);
ship->m_equipment.Add(Equip::SCANNER);
ship->m_equipment.Add(Equip::SHIELD_GENERATOR);
ship->m_equipment.Add(Equip::HYDROGEN, 10);
Space::AddBody(ship);
}
}
#endif /* DEBUG */
// XXX only works on X11
//if (event.key.keysym.sym == SDLK_F11) SDL_WM_ToggleFullScreen(Pi::scrSurface);
if (event.key.keysym.sym == SDLK_F10) Pi::SetView(Pi::objectViewerView);
//.........这里部分代码省略.........
示例4: HandleEvents
void Pi::HandleEvents()
{
SDL_Event event;
Pi::mouseMotion[0] = Pi::mouseMotion[1] = 0;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
if (Pi::game)
Pi::EndGame();
Pi::Quit();
}
else if (ui->DispatchSDLEvent(event))
continue;
Gui::HandleSDLEvent(&event);
if (!Pi::IsConsoleActive())
KeyBindings::DispatchSDLEvent(&event);
else
KeyBindings::toggleLuaConsole.CheckSDLEventAndDispatch(&event);
switch (event.type) {
case SDL_KEYDOWN:
if (event.key.keysym.sym == SDLK_ESCAPE) {
if (Pi::game) {
// only accessible once game started
if (currentView != 0) {
if (currentView != gameMenuView) {
Pi::game->SetTimeAccel(Game::TIMEACCEL_PAUSED);
SetView(gameMenuView);
}
else {
Pi::game->RequestTimeAccel(Game::TIMEACCEL_1X);
SetView(Pi::player->IsDead()
? static_cast<View*>(deathView)
: static_cast<View*>(worldView));
}
}
}
break;
}
// special keys. LCTRL+turd
if ((KeyState(SDLK_LCTRL) || (KeyState(SDLK_RCTRL)))) {
switch (event.key.keysym.sym) {
case SDLK_q: // Quit
if (Pi::game)
Pi::EndGame();
Pi::Quit();
break;
case SDLK_PRINT: // print
case SDLK_KP_MULTIPLY: // screen
{
char buf[256];
const time_t t = time(0);
struct tm *_tm = localtime(&t);
strftime(buf, sizeof(buf), "screenshot-%Y%m%d-%H%M%S.png", _tm);
Screendump(buf, Graphics::GetScreenWidth(), Graphics::GetScreenHeight());
break;
}
#if WITH_DEVKEYS
case SDLK_i: // Toggle Debug info
Pi::showDebugInfo = !Pi::showDebugInfo;
break;
case SDLK_m: // Gimme money!
if(Pi::game) {
Pi::player->SetMoney(Pi::player->GetMoney() + 10000000);
}
break;
case SDLK_F12:
{
if(Pi::game) {
vector3d dir = -Pi::player->GetOrient().VectorZ();
/* add test object */
if (KeyState(SDLK_RSHIFT)) {
Missile *missile =
new Missile(ShipType::MISSILE_GUIDED, Pi::player, Pi::player->GetCombatTarget());
missile->SetOrient(Pi::player->GetOrient());
missile->SetFrame(Pi::player->GetFrame());
missile->SetPosition(Pi::player->GetPosition()+50.0*dir);
missile->SetVelocity(Pi::player->GetVelocity());
game->GetSpace()->AddBody(missile);
} else if (KeyState(SDLK_LSHIFT)) {
SpaceStation *s = static_cast<SpaceStation*>(Pi::player->GetNavTarget());
if (s) {
int port = s->GetFreeDockingPort();
if (port != -1) {
printf("Putting ship into station\n");
// Make police ship intent on killing the player
Ship *ship = new Ship(ShipType::LADYBIRD);
ship->AIKill(Pi::player);
ship->SetFrame(Pi::player->GetFrame());
ship->SetDockedWith(s, port);
game->GetSpace()->AddBody(ship);
} else {
printf("No docking ports free dude\n");
}
} else {
printf("Select a space station...\n");
}
} else {
Ship *ship = new Ship(ShipType::LADYBIRD);
//.........这里部分代码省略.........
示例5: HandleKeyDown
void Pi::HandleKeyDown(SDL_Keysym *key)
{
if (key->sym == SDLK_ESCAPE) {
if (Pi::game) {
// only accessible once game started
HandleEscKey();
}
return;
}
const bool CTRL = input.KeyState(SDLK_LCTRL) || input.KeyState(SDLK_RCTRL);
// special keys.
if (CTRL) {
switch (key->sym) {
case SDLK_q: // Quit
Pi::RequestQuit();
break;
case SDLK_PRINTSCREEN: // print
case SDLK_KP_MULTIPLY: // screen
{
char buf[256];
const time_t t = time(0);
struct tm *_tm = localtime(&t);
strftime(buf, sizeof(buf), "screenshot-%Y%m%d-%H%M%S.png", _tm);
Graphics::ScreendumpState sd;
Pi::renderer->Screendump(sd);
write_screenshot(sd, buf);
break;
}
case SDLK_SCROLLLOCK: // toggle video recording
Pi::isRecordingVideo = !Pi::isRecordingVideo;
if (Pi::isRecordingVideo) {
char videoName[256];
const time_t t = time(0);
struct tm *_tm = localtime(&t);
strftime(videoName, sizeof(videoName), "pioneer-%Y%m%d-%H%M%S", _tm);
const std::string dir = "videos";
FileSystem::userFiles.MakeDirectory(dir);
const std::string fname = FileSystem::JoinPathBelow(FileSystem::userFiles.GetRoot() + "/" + dir, videoName);
Output("Video Recording started to %s.\n", fname.c_str());
// start ffmpeg telling it to expect raw rgba 720p-60hz frames
// -i - tells it to read frames from stdin
// if given no frame rate (-r 60), it will just use vfr
char cmd[256] = { 0 };
snprintf(cmd, sizeof(cmd), "ffmpeg -f rawvideo -pix_fmt rgba -s %dx%d -i - -threads 0 -preset fast -y -pix_fmt yuv420p -crf 21 -vf vflip %s.mp4", config->Int("ScrWidth"), config->Int("ScrHeight"), fname.c_str());
// open pipe to ffmpeg's stdin in binary write mode
#if defined(_MSC_VER) || defined(__MINGW32__)
Pi::ffmpegFile = _popen(cmd, "wb");
#else
Pi::ffmpegFile = _popen(cmd, "w");
#endif
} else {
Output("Video Recording ended.\n");
if (Pi::ffmpegFile != nullptr) {
_pclose(Pi::ffmpegFile);
Pi::ffmpegFile = nullptr;
}
}
break;
#if WITH_DEVKEYS
case SDLK_i: // Toggle Debug info
Pi::showDebugInfo = !Pi::showDebugInfo;
break;
#ifdef PIONEER_PROFILER
case SDLK_p: // alert it that we want to profile
if (input.KeyState(SDLK_LSHIFT) || input.KeyState(SDLK_RSHIFT))
Pi::doProfileOne = true;
else {
Pi::doProfileSlow = !Pi::doProfileSlow;
Output("slow frame profiling %s\n", Pi::doProfileSlow ? "enabled" : "disabled");
}
break;
#endif
case SDLK_F12: {
if (Pi::game) {
vector3d dir = -Pi::player->GetOrient().VectorZ();
/* add test object */
if (input.KeyState(SDLK_RSHIFT)) {
Missile *missile =
new Missile(ShipType::MISSILE_GUIDED, Pi::player);
missile->SetOrient(Pi::player->GetOrient());
missile->SetFrame(Pi::player->GetFrame());
missile->SetPosition(Pi::player->GetPosition() + 50.0 * dir);
missile->SetVelocity(Pi::player->GetVelocity());
game->GetSpace()->AddBody(missile);
missile->AIKamikaze(Pi::player->GetCombatTarget());
} else if (input.KeyState(SDLK_LSHIFT)) {
SpaceStation *s = static_cast<SpaceStation *>(Pi::player->GetNavTarget());
if (s) {
Ship *ship = new Ship(ShipType::POLICE);
int port = s->GetFreeDockingPort(ship);
if (port != -1) {
Output("Putting ship into station\n");
// Make police ship intent on killing the player
ship->AIKill(Pi::player);
ship->SetFrame(Pi::player->GetFrame());
//.........这里部分代码省略.........