本文整理汇总了C++中CShipClass::GetMaxWeapons方法的典型用法代码示例。如果您正苦于以下问题:C++ CShipClass::GetMaxWeapons方法的具体用法?C++ CShipClass::GetMaxWeapons怎么用?C++ CShipClass::GetMaxWeapons使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CShipClass
的用法示例。
在下文中一共展示了CShipClass::GetMaxWeapons方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetRegionsFromWeapons
//.........这里部分代码省略.........
pEntry->rcRect.right = pEntry->rcRect.left + ITEM_ENTRY_WIDTH;
pEntry->rcRect.bottom = pEntry->rcRect.top + ITEM_ENTRY_HEIGHT;
SlotStatus[iIndex] = false;
}
}
// Create a region for each weapon.
for (i = 0; i < pShip->GetDeviceCount(); i++)
{
CInstalledDevice *pDevice = pShip->GetDevice(i);
if (pDevice->IsEmpty()
|| (pDevice->GetCategory() != itemcatWeapon
&& pDevice->GetCategory() != itemcatLauncher))
continue;
if (pDevice->GetCategory() == itemcatLauncher)
bHasLauncher = true;
// If the device already has a position index, then use that (assuming
// it's free).
iIndex = pDevice->GetSlotPosIndex();
if (iIndex < 0 || iIndex >= SlotStatus.GetCount() || !SlotStatus[iIndex])
iIndex = -1;
// If we don't have an assigned slot, figure it out.
if (iIndex == -1)
{
if (!FindLayoutForPos(pDevice->GetPosOffset(pShip), SlotStatus, &iIndex))
continue;
// Remember so we stay in this location.
pDevice->SetSlotPosIndex(iIndex);
}
// Create the region
const SLayoutDesc *pLayout = &g_MiscDevicesLayout[iIndex];
SEntry *pEntry = m_Regions.Insert();
pEntry->iType = typeInstalledItem;
pEntry->pItemCtx = new CItemCtx(pShip, pDevice);
pEntry->iSlotPosIndex = iIndex;
pEntry->rcRect.left = pLayout->xLeft;
pEntry->rcRect.top = pLayout->yTop;
pEntry->rcRect.right = pEntry->rcRect.left + ITEM_ENTRY_WIDTH;
pEntry->rcRect.bottom = pEntry->rcRect.top + ITEM_ENTRY_HEIGHT;
// Mark the layout as used
SlotStatus[iIndex] = false;
}
// Figure out how many empty weapon slots we should create. We add one
// empty slot for each weapon slot, but we subtract one if we don't have
// a launcher and we always have at least 1 empty slot, in case the player
// finds a slot-less weapon.
#ifdef SINGLE_FREE_SLOT
int iEmptySlots = 1;
#else
int iWeaponSlotsInUse;
int iTotalSlotsInUse = pShip->CalcDeviceSlotsInUse(&iWeaponSlotsInUse);
int iEmptySlots = Max(1, Min((pClass->GetMaxDevices() - iTotalSlotsInUse), (pClass->GetMaxWeapons() - iWeaponSlotsInUse)) - (bHasLauncher ? 0 : 1));
#endif
// Try to position the empty slots
CVector vWeaponPos;
SDeviceDesc DeviceDesc;
if (pClass->FindDeviceSlotDesc(devPrimaryWeapon, &DeviceDesc))
vWeaponPos = pClass->GetPosOffset(DeviceDesc.iPosAngle, DeviceDesc.iPosRadius, DeviceDesc.iPosZ, DeviceDesc.b3DPosition);
for (i = 0; i < iEmptySlots; i++)
{
// Find a position
if (FindLayoutForPos(vWeaponPos, SlotStatus, &iIndex))
{
const SLayoutDesc *pLayout = &g_MiscDevicesLayout[iIndex];
SEntry *pEntry = m_Regions.Insert();
pEntry->iType = typeEmptySlot;
pEntry->iSlotType = devPrimaryWeapon;
pEntry->iSlotPosIndex = iIndex;
pEntry->rcRect.left = pLayout->xLeft;
pEntry->rcRect.top = pLayout->yTop;
pEntry->rcRect.right = pEntry->rcRect.left + ITEM_ENTRY_WIDTH;
pEntry->rcRect.bottom = pEntry->rcRect.top + ITEM_ENTRY_HEIGHT;
SlotStatus[iIndex] = false;
}
}
}