本文整理汇总了C++中Sim::FindRegion方法的典型用法代码示例。如果您正苦于以下问题:C++ Sim::FindRegion方法的具体用法?C++ Sim::FindRegion怎么用?C++ Sim::FindRegion使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sim
的用法示例。
在下文中一共展示了Sim::FindRegion方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
bool
NetPlayer::DoObjHyper(NetObjHyper* obj_hyper)
{
if (ship && obj_hyper) {
Sim* sim = Sim::GetSim();
SimRegion* rgn = sim->FindRegion(obj_hyper->GetRegion());
DWORD fc1_id = obj_hyper->GetFarcaster1();
DWORD fc2_id = obj_hyper->GetFarcaster2();
Ship* fc1 = 0;
Ship* fc2 = 0;
int trans = obj_hyper->GetTransitionType();
if (ship->GetRegion() == rgn) {
::Print("NetPlayer::DoObjHyper ship: '%s' rgn: '%s' trans: %d (IGNORED)\n\n",
ship->Name(), obj_hyper->GetRegion().data(), trans);
return false;
}
::Print("NetPlayer::DoObjHyper ship: '%s' rgn: '%s' trans: %d\n\n",
ship->Name(), obj_hyper->GetRegion().data(), trans);
// orbital transition?
if (trans == Ship::TRANSITION_DROP_ORBIT) {
ship->SetTransition(1.0f, Ship::TRANSITION_DROP_ORBIT, ship->Location());
ship->CompleteTransition();
}
else if (trans == Ship::TRANSITION_MAKE_ORBIT) {
ship->SetTransition(1.0f, Ship::TRANSITION_MAKE_ORBIT, ship->Location());
ship->CompleteTransition();
}
else {
if (fc1_id)
fc1 = sim->FindShipByObjID(fc1_id);
if (fc2_id)
fc2 = sim->FindShipByObjID(fc2_id);
sim->CreateExplosion(ship->Location(), Point(0,0,0),
Explosion::QUANTUM_FLASH, 1.0f, 0, ship->GetRegion());
sim->RequestHyperJump(ship, rgn, obj_hyper->GetLocation(), trans, fc1, fc2);
ShipStats* stats = ShipStats::Find(ship->Name());
stats->AddEvent(SimEvent::QUANTUM_JUMP, rgn->Name());
}
return true;
}
return false;
}
示例2: if
//.........这里部分代码省略.........
if (hud)
hud->ShowHUDInst();
}
}
break;
case IFF:
if (elem) {
elem->SetIFF(event_param[0]);
}
else if (ship) {
ship->SetIFF(event_param[0]);
}
break;
case DAMAGE:
if (ship) {
ship->InflictDamage(event_param[0]);
if (ship->Integrity() < 1) {
NetUtil::SendObjKill(ship, 0, NetObjKill::KILL_MISC);
ship->DeathSpiral();
Print(" %s Killed By Scripted Event %d (%s)\n", (const char*) ship->Name(), id, FormatGameTime());
}
}
else {
Print(" EVENT %d: Could not apply damage to ship '%s' (not found).\n", id, (const char*) event_ship);
}
break;
case JUMP:
if (ship) {
SimRegion* rgn = sim->FindRegion(event_target);
if (rgn && ship->GetRegion() != rgn) {
if (rgn->IsOrbital()) {
QuantumDrive* quantum_drive = ship->GetQuantumDrive();
if (quantum_drive) {
quantum_drive->SetDestination(rgn, Point(0,0,0));
quantum_drive->Engage(true); // request immediate jump
}
else if (ship->IsAirborne()) {
ship->MakeOrbit();
}
}
else {
ship->DropOrbit();
}
}
}
break;
case HOLD:
if (elem)
elem->SetHoldTime(event_param[0]);
break;
case SKIP: {
for (int i = 0; i < event_nparams; i++) {
int skip_id = event_param[i];
ListIter<MissionEvent> iter = sim->GetEvents();
示例3: FindPlayerByObjID
bool
NetGameClient::DoJoinBacklog(NetJoinAnnounce* join_ann)
{
bool finished = false;
if (!join_ann)
return finished;
Sim* sim = Sim::GetSim();
if (!sim)
return finished;
DWORD nid = join_ann->GetNetID();
DWORD oid = join_ann->GetObjID();
Text name = join_ann->GetName();
Text elem_name = join_ann->GetElement();
Text region = join_ann->GetRegion();
Point loc = join_ann->GetLocation();
Point velocity = join_ann->GetVelocity();
int index = join_ann->GetIndex();
int shld_lvl = join_ann->GetShield();
Ship* ship = 0;
char ship_name[128];
strcpy_s(ship_name, Game::GetText("NetGameClient.no-ship").data());
if (nid && oid) {
NetPlayer* remote_player = FindPlayerByObjID(oid);
if (remote_player) {
remote_player->SetName(name);
remote_player->SetObjID(oid);
if (index > 0)
sprintf_s(ship_name, "%s %d", elem_name.data(), index);
else
sprintf_s(ship_name, "%s", elem_name.data());
}
else {
Element* element = sim->FindElement(elem_name);
if (element) {
ship = element->GetShip(index);
}
if (ship) {
strcpy_s(ship_name, ship->Name());
SimRegion* rgn = ship->GetRegion();
if (rgn && region != rgn->Name()) {
SimRegion* dst = sim->FindRegion(region);
if (dst) dst->InsertObject(ship);
}
ship->MoveTo(loc);
ship->SetVelocity(velocity);
Shield* shield = ship->GetShield();
if (shield)
shield->SetNetShieldLevel(shld_lvl);
NetPlayer* remote_player = new(__FILE__,__LINE__) NetPlayer(nid);
remote_player->SetName(name);
remote_player->SetObjID(oid);
remote_player->SetShip(ship);
players.append(remote_player);
finished = true;
if (name == "Server A.I. Ship") {
Print("NetGameClient::DoJoinBacklog() Remote Player '%s' has joined as '%s' with ID %d\n", name.data(), ship_name, oid);
}
else {
HUDView::Message(Game::GetText("NetGameClient.remote-join").data(), name.data(), ship_name);
}
}
}
}
return finished;
}
示例4: new
void
NetGameClient::DoJoinAnnounce(NetMsg* msg)
{
if (!msg) return;
Sim* sim = Sim::GetSim();
if (!sim) return;
NetJoinAnnounce* join_ann = new(__FILE__,__LINE__) NetJoinAnnounce;
bool saved = false;
if (join_ann->Unpack(msg->Data())) {
DWORD nid = msg->NetID();
DWORD oid = join_ann->GetObjID();
Text name = join_ann->GetName();
Text elem_name = join_ann->GetElement();
Text region = join_ann->GetRegion();
Point loc = join_ann->GetLocation();
Point velocity = join_ann->GetVelocity();
int index = join_ann->GetIndex();
int shld_lvl = join_ann->GetShield();
join_ann->SetNetID(nid);
Ship* ship = 0;
char ship_name[128];
strcpy_s(ship_name, Game::GetText("NetGameClient.no-ship").data());
if (local_player && player_name == name) {
HUDView::Message(Game::GetText("NetGameClient.local-accept"), name.data(), local_player->Name());
objid = oid;
netid = nid;
local_player->SetObjID(oid);
local_player->SetNetObserver(false);
Observe(local_player);
SimRegion* rgn = local_player->GetRegion();
if (rgn && region != rgn->Name()) {
SimRegion* dst = sim->FindRegion(region);
if (dst) dst->InsertObject(local_player);
}
local_player->MoveTo(loc);
local_player->SetVelocity(velocity);
Shield* shield = local_player->GetShield();
if (shield)
shield->SetNetShieldLevel(shld_lvl);
}
else {
NetPlayer* remote_player = FindPlayerByObjID(oid);
if (remote_player) {
remote_player->SetName(name);
remote_player->SetObjID(oid);
if (index > 0)
sprintf_s(ship_name, "%s %d", elem_name.data(), index);
else
sprintf_s(ship_name, "%s", elem_name.data());
}
else {
Element* element = sim->FindElement(elem_name);
if (element) {
ship = element->GetShip(index);
}
else {
Print("NetGameClient::DoJoinAnnounce() could not find elem %s for player '%s' objid %d\n",
elem_name.data(), name.data(), oid);
NetUtil::SendElemRequest(elem_name.data());
}
if (!ship) {
// save it for later:
join_backlog.append(join_ann);
saved = true;
}
else {
strcpy_s(ship_name, ship->Name());
SimRegion* rgn = ship->GetRegion();
if (rgn && region != rgn->Name()) {
SimRegion* dst = sim->FindRegion(region);
if (dst) dst->InsertObject(ship);
}
ship->MoveTo(loc);
ship->SetVelocity(velocity);
Shield* shield = ship->GetShield();
if (shield)
shield->SetNetShieldLevel(shld_lvl);
NetPlayer* remote_player = new(__FILE__,__LINE__) NetPlayer(nid);
remote_player->SetName(name);
remote_player->SetObjID(oid);
remote_player->SetShip(ship);
players.append(remote_player);
//.........这里部分代码省略.........