shared_ptr<Portal> PortalsSystem::_loadPortal(const String &path, bool recovery, bool start) { try { shared_ptr<Portal> portal(OS_NEW Portal(getPeersCacheSize(), getDatabasesCacheSize())); if(_initPortal(portal, path, recovery, start) == false) return nullptr; /* if(getPortal(portal->getPortalID()) != nullptr) return false; */ if(getPortalByFullPov(portal->getFullPovID()) != nullptr) return nullptr; m_portals.push_back(portal); return portal; } catch(std::exception &e) { OS_LOG_ERROR(e.what()); } catch(...) { OS_LOG_ERROR(_S("Unknown error loading portal '") + path + _S("'")); } return nullptr; }
// Tests for Portal void testPortalUpdate(void) { setUp(); Portal portal(*tileSet, 0, 0, 0, 100, true); TS_ASSERT(portal.is_projectile); TS_ASSERT(portal.wall == Wall::NONE); TS_ASSERT_DELTA(portal.dy, PORTAL_SPEED, 0.001); TS_ASSERT_DELTA(portal.dx, 0.0, 0.001); breakDown(); }
TEST_F( CPortalUnit,logout_Ok_v2 ) { std::cout << "是否进行 logout v2 测试" << std::endl; char ch = getchar(); getchar(); if( ch != 'y' && ch != 'Y' ) { return; } CPortal portal( EPORTAL_VER::VER2, "123portal" ); Poco::Net::SocketAddress nasAddr( "192.168.10.99",2000 ); Poco::Timespan timeout( 5,0 ); try{ portal.userLogout("192.168.202.5",nasAddr, timeout ); }catch( Taiji::ExceptPortal& e ) { std::cerr << "!!!!!!!!!" << e.getErrInfo() << "!!!!!!!!!!" << std::endl; } }
void playfield::setfield(int mapid, char pid) { step = GST_TRANSITION; map_objects.clear(); portals.clear(); string oldbgm = map_info.getbgm(); app.getimgcache()->setmode(ict_map); nl::nx::view_file("Map"); string fullname; string strid = to_string(mapid); size_t extend = 9 - strid.length(); for (char i = 0; i < extend; i++) { fullname.append("0"); } node mapdata = nl::nx::nodes["Map"].resolve("Map/Map" + to_string(mapid / 100000000) + "/" + fullname.append(strid) + ".img"); footholds = footholdtree(mapdata["foothold"]); map_info = mapinfo(mapid, mapdata["info"], vector2d(footholds.getwalls()), vector2d(footholds.getborders())); landr = laddersropes(mapdata["ladderRope"]); nl::node portalnodes = mapdata["portal"]; for (nl::node portalnd = portalnodes.begin(); portalnd != portalnodes.end(); portalnd++) { char pid = static_cast<char>(stoi(portalnd.name())); portaltype ptype = static_cast<portaltype>(portalnd.resolve("pt").get_integer()); string pname = portalnd.resolve("pn").get_string(); vector2d ppos = vector2d(static_cast<int>(portalnd.resolve("x").get_integer()), static_cast<int>(portalnd.resolve("y").get_integer())); int targetid = static_cast<int>(portalnd.resolve("tm").get_integer()); string targetpname = portalnd.resolve("tn").get_string(); animation anim; nl::node pnode = nl::nx::nodes["Map"].resolve("MapHelper.img/portal/game"); switch (ptype) { case PT_REGULAR: anim = animation(pnode.resolve("pv")); break; case PT_HIDDEN: case PT_SCRIPTED_HIDDEN: anim = animation(pnode.resolve("ph/default/portalContinue")); break; } portals.addportal(pid, portal(ptype, pname, targetid, targetid == mapid, targetpname, anim, ppos)); } nl::nx::view_file("Back"); backgrounds = mapbackgrounds(mapdata.resolve("back"), map_info.getwalls(), map_info.getborders()); nl::nx::unview_file("Back"); nl::nx::view_file("Tile"); nl::nx::view_file("Obj"); for (int i = 0; i < 8; i++) { maplayers[i] = maplayer(mapdata.resolve(to_string(i))); } nl::nx::unview_file("Tile"); nl::nx::unview_file("Obj"); nl::nx::unview_file("Map"); app.getimgcache()->unlock(); vector2d startpos = portals.getspawnpoint(pid); playerchar.setfh(&footholds); playerchar.setposition(startpos); view.setposition(startpos); view.setbounds(map_info.getwalls(), map_info.getborders()); string path = map_info.getbgm(); if (path != oldbgm) { bgm.Cleanup(); wstring stemp = wstring(path.begin(), path.end()); bgm.Load(stemp.c_str()); bgm.SetVolume((100 * config.getbgmvolume()) - 10000); bgm.Play(); } step = GST_GAME; }