コード例 #1
0
bool 
RedundantDataPath::IsAValidConfiguration( U32 &errorString ){

	// the connection # check
	if( (GetChildCount() > 2) || (GetChildCount() < 1 ) ){
		errorString = CTS_SSAPI_CM_INVALID_CONN_COUNT_FOR_RDP;
		return false;
	}

	// must belong to the same host
	HostManager *pHM = (HostManager *)GetObjectManager( GetManager(), SSAPI_MANAGER_CLASS_TYPE_HOST_MANAGER );
	if( !pHM->DoConnectionsBelongToSameHost( m_children ) ){
		errorString = CTS_SSAPI_CM_CONN_MUST_BELONG_2_SAME_HOST;
		return false;
	}

	// must map to a single primary/fail-over IOP pair
	if( GetChildCount() == 2 ){
		DeviceManager		*pDM = (DeviceManager *)GetObjectManager(GetManager(), SSAPI_MANAGER_CLASS_TYPE_DEVICE_MANAGER );
		ConnectionManager	*pCM = (ConnectionManager *)GetManager();
		DesignatorId		id1 = GetChildIdAt( 0 ), id2 = GetChildIdAt( 1 );

		id1 = ((ConnectionBase *)pCM->GetManagedObject( &id1 ))->GetGeminiPortId();
		id2 = ((ConnectionBase *)pCM->GetManagedObject( &id2 ))->GetGeminiPortId();
		if( !pDM->AreThesePortsOnPartneredNacs( id1, id2 ) ){
			errorString = CTS_SSAPI_CM_CONN_MUST_BE_ON_PARTNER_NACS;
			return false;
		}
	}

	// we made it to here? Gee, it's good then!!!
	return true;
}
コード例 #2
0
void Player::CheckArrivalTriggers()
{
	//first check for objects within 40K - only need to check these every 2 seconds
	if (m_MovementID%20) // NB movement ID in this func will always be a multiple of 5
	{
		GetObjectManager()->SetObjectsAtRange(this, TRIGGER_RANGE_1, m_NavRange_1, 0);
		GetObjectManager()->SetObjectsAtRange(this, TRIGGER_RANGE_2, m_NavRange_2, m_NavRange_1);
		GetObjectManager()->SetObjectsAtRange(this, TRIGGER_RANGE_3, m_NavRange_3, m_NavRange_2);
	}
}
コード例 #3
0
ファイル: ObjectManager.cpp プロジェクト: CraigCraig/OpenRCT2
 uint8 object_manager_get_loaded_object_entry_index(const void * loadedObject)
 {
     IObjectManager * objectManager = GetObjectManager();
     const Object * object = static_cast<const Object *>(loadedObject);
     uint8 entryIndex = objectManager->GetLoadedObjectEntryIndex(object);
     return entryIndex;
 }
コード例 #4
0
ファイル: ObjectManager.cpp プロジェクト: CraigCraig/OpenRCT2
 void object_manager_unload_all_objects()
 {
     IObjectManager * objectManager = GetObjectManager();
     if (objectManager != nullptr)
     {
         objectManager->UnloadAll();
     }
 }
コード例 #5
0
ファイル: GameServer.cpp プロジェクト: Legend90/dboserver
void GameServer::AddSpawn(SpawnData data, eOBJTYPE type)
{
	sGU_OBJECT_CREATE sPacket;
	memset(&sPacket, 0, sizeof(sGU_OBJECT_CREATE));
	sPacket.wOpCode = GU_OBJECT_CREATE;
	sPacket.handle = AcquireSerialID();
	switch (type)
	{
	case OBJTYPE_NPC:
		sPacket.sObjectInfo.objType = OBJTYPE_NPC;
		sPacket.sObjectInfo.npcBrief.tblidx = data.mob_Tblidx;
		sPacket.sObjectInfo.npcBrief.wCurLP = 100;
		sPacket.sObjectInfo.npcBrief.wMaxLP = 100;
		sPacket.sObjectInfo.npcBrief.fLastWalkingSpeed = 3.0f;
		sPacket.sObjectInfo.npcBrief.fLastRunningSpeed = 7.0f;

		sPacket.sObjectInfo.npcState.sCharStateBase.byStateID = CHARSTATE_SPAWNING;
		sPacket.sObjectInfo.npcState.sCharStateBase.bFightMode = FALSE;

		sPacket.sObjectInfo.npcState.sCharStateBase.vCurLoc.x = data.vSpawn_Loc.x;
		sPacket.sObjectInfo.npcState.sCharStateBase.vCurLoc.y = data.vSpawn_Loc.y;
		sPacket.sObjectInfo.npcState.sCharStateBase.vCurLoc.z = data.vSpawn_Loc.z;

		sPacket.sObjectInfo.npcState.sCharStateBase.vCurDir.x = data.vSpawn_Dir.x;
		sPacket.sObjectInfo.npcState.sCharStateBase.vCurDir.y = data.vSpawn_Dir.y;
		sPacket.sObjectInfo.npcState.sCharStateBase.vCurDir.z = data.vSpawn_Dir.z;
		break;
	case OBJTYPE_MOB:
		sPacket.sObjectInfo.objType = OBJTYPE_MOB;
		sPacket.sObjectInfo.mobBrief.tblidx = data.mob_Tblidx;
		sPacket.sObjectInfo.mobBrief.wCurLP = 100;
		sPacket.sObjectInfo.mobBrief.wMaxLP = 100;
		sPacket.sObjectInfo.mobBrief.fLastWalkingSpeed = 3.0f;
		sPacket.sObjectInfo.mobBrief.fLastRunningSpeed = 7.0f;

		sPacket.sObjectInfo.mobState.sCharStateBase.byStateID = CHARSTATE_SPAWNING;
		sPacket.sObjectInfo.mobState.sCharStateBase.bFightMode = FALSE;

		sPacket.sObjectInfo.mobState.sCharStateBase.vCurLoc.x = data.vSpawn_Loc.x + (float)(rand() % data.bySpawn_Loc_Range);
		sPacket.sObjectInfo.mobState.sCharStateBase.vCurLoc.y = data.vSpawn_Loc.y;
		sPacket.sObjectInfo.mobState.sCharStateBase.vCurLoc.z = data.vSpawn_Loc.z + (float)(rand() % data.bySpawn_Loc_Range);

		sPacket.sObjectInfo.mobState.sCharStateBase.vCurDir.x = data.vSpawn_Dir.x;
		sPacket.sObjectInfo.mobState.sCharStateBase.vCurDir.y = data.vSpawn_Dir.y;
		sPacket.sObjectInfo.mobState.sCharStateBase.vCurDir.z = data.vSpawn_Dir.z;
		break;
	}
	GetObjectManager()->AddObject(sPacket);
}
コード例 #6
0
ファイル: ObjectManager.cpp プロジェクト: CraigCraig/OpenRCT2
 void object_manager_unload_objects(const rct_object_entry * entries, size_t count)
 {
     IObjectManager * objectManager = GetObjectManager();
     objectManager->UnloadObjects(entries, count);
 }
コード例 #7
0
ファイル: ObjectManager.cpp プロジェクト: CraigCraig/OpenRCT2
 void * object_manager_load_object(const rct_object_entry * entry)
 {
     IObjectManager * objectManager = GetObjectManager();
     Object * loadedObject = objectManager->LoadObject(entry);
     return (void *)loadedObject;
 }
コード例 #8
0
ファイル: ObjectManager.cpp プロジェクト: CraigCraig/OpenRCT2
 void * object_manager_get_loaded_object_by_index(size_t index)
 {
     IObjectManager * objectManager = GetObjectManager();
     Object * loadedObject = objectManager->GetLoadedObject(index);
     return (void *)loadedObject;
 }